5.2 KiB
5.2 KiB
Stan
Admin Bot for Python Telegram group
What does this project do?
- Send links on command (chat rules, FAQs, libraries etc.)
- Ban users and delete messages
- Remind dates
- Report Daily statistics (how many banned, deleted, sent messages)
- Search for the Zen of Python quotes (inline query)
- Help users with googling their queries
- Make faces when doubtful bloggers are mentioned
- Etc.
Why is this project useful?
You can use this project as a pre-coded customizable bot. Original (and currently working example) bot's Telegram username: @LutzPyBot
How to deploy it?
- Clone repository to your linux server into
/home/username/Stan/directory. - Create virtual environment, activate virtual environment, install required packages from
/requirements/common.txtand/requirements/prod.txt. - Create
.envfile inStandirectory with 3 variables:STAN(Bot Token),whitelist(White usernames, comma separated),whiteids(White IDs, comma separated) - Set webhook using Python interactive shell with
bot.set_webhook()or manually according Telegram Bot API Documentation. - Configure nginx as a reverse proxy. Example of Nginx config:
server { server_name rykov7.ru; root /home/inferno/Stan; index index.html index.htm index.nginx-debian.html; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; } # Stan Telegram Bot location /[your_bot_token_must_be_here]/ { include proxy_params; proxy_pass http://127.0.0.1:8813; } }
Then install certbot SSL certificate for this config.
- Configure the bot as a daemon:
- Create daemon unit file in
/etc/systemd/system/stan.servicewith the next content (replaceinfernowith your username):
[Unit]
Description=@Stan Telegram Bot
After=network.target
[Service]
User=inferno
Group=inferno
WorkingDirectory=/home/inferno/Stan
Environment="PATH=/home/inferno/Stan/venv/bin"
ExecStart=/home/inferno/Stan/.venv/bin/gunicorn -k uvicorn.workers.UvicornWorker --bind 127.0.0.1:8813 wsgi:app
[Install]
WantedBy=multi-user.target
- Enable and start with
systemctl enable stan.service,systemctl start stan.service.
Where can I get more help, if I need it?
You can read PyTelegramBotAPI documentation for more usage examples.
How do I read logs of running Stan bot?
Continuous log reading on Linux:
# journalctl --unit=stan.service -f
How to interact with Stan?
Bot can receive commands and behave depending on chat situation.
Standard command pack for bot father includes:
- nobot - Telebot shouldn't be your first Python project
- nogui - GUI app shouldn't be your first Python project
- nometa - Don't ask meta questions
- neprivet - Don't hello
- bdmtss - Rim shot
- quote - Random quote
- add - Add quote
- g - Google it [Request text can be any text from replied message or arguments if there's text after
\g example] - rules - Chat rules
- faq - FAQ
- books - Pythonista's Library
- lutz - Send Lutz book
- add - Add quote to Stan's dictionary
- add_spam - Add spam phrase to Stan's dictionary
Быстрое развертывание за 2 минуты на серверах Ubuntu или Debian с помощью Ansible 🚀
Подготовка:
- Клонируйте репозиторий командой
git clone https://github.com/LeoR156/Stan-Ansible - Измените файл
inventory.iniкомандойnano inventiry.ini: Поменяйте IP на IP вашего реального сервера, при желании можно изменить имя пользователя и метод авторизации по SSH #Если вы запускаете Ansible прямо на самом сервере, куда ставите бота, то в inventory.ini вместо IP напишите: localhost ansible_connection=local - Измените файл
vars.ymlкомандойnano vars.yml, впишите ваш реальный домен. - Создайте и напишите в файл .env следующие переменные: STAN, whitelist, whiteids и rollback. Команда:
nano .env - Скачайте Ansible командой
sudo apt install Ansible(для Ubuntu/Debian).
Запуск развертывания
- Введите команду
ansible-playbook playbook.yml -i inventory.ini