3.7 KiB
Executable File

everyone-mention-telegram-bot

simple, but useful telegram bot to gather all of group members attention!

Contents

Getting started

Requirements

  • docker-compose in version 1.25.0
  • docker in version 20.10.7

Installation

git clone https://github.com/miloszowi/everyone-mention-telegram-bot.git

after that, you need to copy env files and fulfill it with correct values

cp .env.local .env
cp docker/config/app.dist.env docker/config/app.env
cp docker/config/database.dist.env docker/config/app.env

and finally, you can run the bot by launching docker containers

docker-compose up -d

(-d flag will run containers in detached mode)

Logs

You can use

docker/logs <container>

to check container logs

Env files

.env

  • MONGODB_INTERNAL_PORT - Mongodb internal port (should be the same as declared in app.env)
  • APP_INTERNAL_PORT - App internal port (should be the same as declared in app.env)
  • APP_EXPOSED_PORT - App exposed port (if you are not using any reverse proxy it should be also the same as declared in app.env)

app.env

  • BOT_TOKEN - your telegram bot token from BotFather
  • WEBHOOK_URL - url for telegram webhooks (withour the bot token)
  • PORT - port used for initializing webhook & app
  • MONGODB_DATABASE - MongoDB database name
  • MONGODB_USERNAME - MongoDB username
  • MONGODB_PASSWORD - MongoDB password
  • MONGODB_HOSTNAME - MongoDB host (default database - container name)
  • MONGODB_PORT - MongoDB port (default 27017 - given in docker-compose configuration)

database.env

  • MONGO_INITDB_ROOT_USERNAME - conf from app.env
  • MONGO_INITDB_ROOT_PASSWORD - conf from app.env
  • MONGO_INITDB_DATABASE - conf from app.env
  • MONGODB_DATA_DIR - directory to store MongoDB documents (inside a container)
  • MONDODB_LOG_DIR - path to logs storage

Commands

/in

/in <group_name>

(blank group_name will assign you to default group)

Will sign you in for everyone-mentions.

in command example

If you have already opted-in before, alternative reply will be displayed.

in command when someone already opted in example

/out

/out <group_name>

Will sign you off for everyone-mentions.

out command example

If you haven't opted-in before, alternative reply will be displayed.

out command when someone did not opt in example

/everyone

/everyone <group_id>

Will mention everyone that opted-in for everyone-mentions separated by spaces.

If user does not have nickname, it will first try to assign his firstname, then random firstname from names python library

everybody command example

If there are no users that opted-in for mentioning, alternative reply will be displayed.

everybone noone to mention example

/groups

Will display available groups for this chat as well with members count that opted-in for specific group

/silent

/silent <group_name>

Will display all users that opted-in but without notyfing them.