Rykov7 / Stan

Telegram Admin Bot
https://t.me/LutzPyBot
MIT License
2 stars 3 forks source link
telegram telegram-bot

Stan

Admin Bot for Python Telegram group

What does this project do?

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?

  1. Clone repository to your linux server into /home/username/Stan/ directory.

  2. Create virtual environment, activate virtual environment, install required packages from /requirements/common.txt and /requirements/prod.txt.

  3. Create .env file in Stan directory with 3 variables: STAN (Bot Token), whitelist (White usernames, comma separated), whiteids (White IDs, comma separated)

  4. Set webhook using Python interactive shell with bot.set_webhook() or manually according Telegram Bot API Documentation.

  5. 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.

  6. Configure the bot as a daemon:

    • Create daemon unit file in /etc/systemd/system/stan.service with the next content (replace inferno with 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](url=https://github.com/eternnoir/pyTelegramBotAPI) 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