Can be found on telegram as @ChannelActionsBot!
- Auto Approve new join requests.
- Auto Decline new join requests.
- Custom welcome messages.
- Web dashboard + Telegram Mini App to manage settings, with dark mode and owner stats (daily approve/decline counters, most active chats).
The bot serves a dashboard (static SPA + JSON API) on PORT (default 8000)
in both webhook and polling modes.
- Auth: inside Telegram, the Mini App authenticates automatically via
signed
initData; in a browser, the official Telegram Login Widget is used. Every settings change is re-verified againstgetChatMember, so only chat admins can change a chat's settings. - Mini App setup: set
WEBAPP_URLto your public HTTPS URL — the bot installs it as its menu button on startup. Optionally also create a Mini App via @BotFather →/newappto give it at.me/<bot>/<app>link. - Login widget setup: in BotFather,
/setdomain→ your dashboard domain (required for browser login; the Mini App works without it). - Webhook note: include
my_chat_memberinallowed_updateswhen setting your webhook, so the dashboard learns about chats automatically:.../setWebhook?url=<url>/<token>&allowed_updates=["message","callback_query","chat_join_request","my_chat_member"] - Stats counters start from the day this version is deployed; the chart fills in over its first 14 days.
Requirements:
- Deno
- npm (for pm2) (skip if you plan to use systemd)
Note The below command will install deno, npm and pm2. You do not have to manually install them.
wget https://raw.githubusercontent.com/xditya/ChannelActionsBot/deno/install.sh && bash install.sh
Warning This command is only for the first run.
Note Fill up the enviromnent vars as in .env.sample when a nano editor is opened. Use CTRL+S and CTRL+X to save and exit, and continue installation.
Note For viewing logs, use
pm2 logs ChannelActions
- Open deno deploy, create a new project.
- Fork the
denobranch of this repo. - Search for this repo on deno deploy, set branch as deno, set file as
main.ts - Add your environment vars and click "Link".
- Once done, open the deployment page, copy deployment URL, set your bot's
webhook using
https://api.telegram.org/bot<your_bot_token_here>/setWebhook?url=<deployment_url_here>/<your_bot_token_here>.
The bot now has multi-language support. You can pr your local language to this repo!
- Go to the locales folder.
- Open any file, say en.ftl.
- Copy the contents, make a new file under the locales directory, named
lang_code.ftl, wherelang_codeis your language code. - Edit the text in the new file, save it and make a pull request to this repository.
- That's it! The pr will be tested and merged.
- Telegram, @BotzHubChat