From 816ef7fd06203843cf29dfcef915fb0e99c14140 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 17 Jul 2025 17:20:13 +0000 Subject: [PATCH] Revert LICENSE and README.md changes, update Dockerfile to use multi-stage build with uv Co-authored-by: nikdoof <170514+nikdoof@users.noreply.github.com> --- Dockerfile | 24 +++++++++++++++--------- LICENSE | 5 +++-- README.md | 54 ++++++++++++++++++++++++++++++++---------------------- 3 files changed, 50 insertions(+), 33 deletions(-) diff --git a/Dockerfile b/Dockerfile index b4e6252..56e37fa 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,16 +1,22 @@ -FROM python:3.9-alpine +FROM python:3.9-alpine AS base + +# Builder +FROM base AS builder # Install uv -# Note: In some build environments, you may need to add --trusted-host flags for SSL -RUN pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org uv +RUN pip install uv -WORKDIR /app -COPY uv.lock pyproject.toml README.md /app/ -COPY smsbot /app/smsbot +WORKDIR /src +COPY uv.lock pyproject.toml README.md /src/ +COPY smsbot /src/smsbot -# Install dependencies -# Note: In some environments, you may need to configure SSL certificates +# Create virtual environment and install dependencies RUN uv sync --frozen --no-dev +# Final container +FROM base AS runtime + +COPY --from=builder /src/.venv /runtime +ENV PATH=/runtime/bin:$PATH EXPOSE 80/tcp -CMD ["uv", "run", "smsbot"] \ No newline at end of file +CMD ["smsbot"] \ No newline at end of file diff --git a/LICENSE b/LICENSE index 894ee77..4e37b7c 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,7 @@ -The MIT License (MIT) +MIT License -Copyright (c) 2016 Andrey Nering +Copyright (c) 2019 Five B +Copyright (c) 2022 Andrew Williams Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 236df49..5433f5e 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,37 @@ -
- - - +# SMSBot -

Task

+A simple Telegram bot to receive SMS messages. -

- Task is a task runner / build tool that aims to be simpler and easier to use than, for example, GNU Make. -

+Forked from [FiveBoroughs/Twilio2Telegram](https://github.com/FiveBoroughs/Twilio2Telegram). -

- Installation | Documentation | Twitter | Bluesky | Mastodon | Discord -

+## Functionality -

Gold Sponsors

+This simple tool acts as a webhook receiver for the Twilio API, taking messages sent over and posting them on Telegram to a target chat or channel. This is useful for forwarding on 2FA messages, notification text messages for services that don't support international numbers (*cough* Disney, of all people). - - - - -
- - - -
-
+The bot is designed to run within a Kubernetes environment, but can be operated as a individual container, or as a hand ran service. + +## Configuration + +All configuration is provided via environment variables + +| Variable | Required? | Description | +| -------------------------- | --------- | --------------------------------------------------------------------------- | +| SMSBOT_DEFAULT_SUBSCRIBERS | No | A list of IDs, seperated by commas, to add to the subscribers list on start | +| SMSBOT_LISTEN_HOST | No | The host for the webhooks to listen on, defaults to `0.0.0.0` | +| SMSBOT_LISTEN_PORT | No | The port to listen to, defaults to `80` | +| SMSBOT_OWNER_ID | No | ID of the owner of this bot | +| SMSBOT_TELEGRAM_BOT_TOKEN | Yes | Your Bot Token for Telegram | +| SMSBOT_TWILIO_AUTH_TOKEN | No | Twilio auth token, used to validate any incoming webhook calls | + +## Setup + +To configure SMSBot, you'll need a Twilio account, either paid or trial is fine. + +* Setup a number in the location you want. +* Under Phone Numbers -> Manage -> Active Numbers, click the number you want to setup. +* In the "Voice & Fax" section, update the "A Call Comes In" to the URL of your SMSBot instance, with the endpoint being `/call`, e.g. `http://mymachine.test.com/call` +* In the "Messaging" section, update the "A Message Comes In" to the URL of your SMSBot instance, with the endpoint being `/message`, e.g. `http://mymachine.test.com/message` + +Your bot should now receive messages, on Telegram you need to start a chat or invite it into any channels you want, then update the `SMSBOT_DEFAULT_SUBSCRIBERS` values with their IDs. + +**Note**: You cannot send test messages from your Twilio account to your Twilio numbers, they'll be silently dropped or fail with an "Invalid Number" error.