ChannelActionsBot
July 19, 2026 · View on GitHub
Can be found on telegram as @ChannelActionsBot!
Features
- 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).
Web dashboard / Mini App
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.
Local Hosting
Requirements:
- Deno
- npm (for pm2) (skip if you plan to use systemd)
Using PM2
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
Deno Deploy
- 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>.
Translating
The bot now has multi-language support. You can pr your local language to this repo!
How to translate?
- 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.
Support
- Telegram, @BotzHubChat