Skip to main content

A zero-boilerplate simple telegram bots

Project description

PyPI PyPI - Python Version GitHub

TgBotZero

Телеграм-боты в пару строчек кода. Простые телеграм-боты должно быть очень просто делать!

Примеры

Бот, показывающий твоё сообщение:

Сначала нужно импортировать всё из библиотеки: from tgbotzero import *. Токен нужно указать в глобальной переменной TOKEN. Для обработки текстовых сообщений нужно создать функцию on_message(msg: str). Функция принимает текст сообщения, и может вернуть либо строку с текстом ответа, либо список из сообщений, описаний кнопок и картинок. Про кнопки и картинки будет дальше. Для запуска бота нужно выполнить команду run_bot() без параметров.

import tgbotzero

TOKEN = '123:tokenHereFromBotFatherInTelegram'

def on_message(msg: str):
    return "Твоё сообщение: " + msg
    
run_bot()
echobot

Установка

Введите в терминале:

pip install tgbotzero --upgrade --user

Или запустите эту программу:

import os, sys

python = sys.executable
user = '--user' if 'venv' not in python and 'envs' not in python else ''
cmd = f'"{python}" -m pip install tgbotzero --upgrade {user}'
os.system(cmd)

Бот с кнопками:

Для того чтобы добавить к любому сообщению кнопку, нужно в список артефактов ответа добавить кнопки: Button(text_on_button, button_handler_suffix, callback_data). Для обработки нажатий на кнопку нужно реализовать функцию on_button_NAME(data), где NAME=button_handler_suffix. В качестве data будет передано callback_data.

from tgbotzero import *

TOKEN = '123:tokenHereFromBotFatherInTelegram'

def on_message(msg: str):
    return [
        "Твоё сообщение: " + msg,
        Button('Кнопка', 'btn'),
    ]

def on_button_btn(data):
    return 'Нажата кнопка. Отправьте любое сообщение для продолжения'

run_bot()
echobot

Бот с командами:

Чтобы обрабатывать команды, нужно создать функцию вида on_command_NAME(cmd: str), где NAME — это собственно команда. Например, для обработки команд /start нужна функция on_command_start. Функция может возвращать текст, кнопки и т.п. точно так же, как и on_message и другие хендлеры-обработчики. При вызове команды /start все команды будут автоматом добавлены в меню пользователя. Для указания описания команды функции нужно указать doc-string:

def on_command_plus(cmd: str):
    """Add 1 to counter"""
from tgbotzero import *

TOKEN = '123:tokenHereFromBotFatherInTelegram'


def on_message(msg: str):
    return '''Доступны команды:
/show — показать
/plus — прибавить 1
/minus — вычесть 1'''

counter = 0

def on_command_show(cmd: str):
    """Показать значение"""
    return f'{counter=}'

def on_command_plus(cmd: str):
    """Прибавить 1"""
    global counter
    counter += 1
    return f'{counter=}'

def on_command_minus(cmd: str):
    """Вычесть 1"""
    global counter
    counter -= 1
    return f'{counter=}'

run_bot()
commands

Бот с картинками:

Для отправки изображения нужно добавить в возвращаемый список Image(image_filename). Можно отправлять несколько изображений в одном сообщении, в том числе отправлять изображения из обработчиков кнопок и команд.

from tgbotzero import *

TOKEN = '123:tokenHereFromBotFatherInTelegram'

def on_message(msg: str):
    return [
        f"Мяу-гав!",
        Image('cat.png'),
        Image('dog.png'),
        Button('Класс!', 'btn')
    ]

def on_button_btn(data):
    return 'Ага!'

run_bot()
gallery

Обработка и модификация картинок:

Для обработки сообщений с картинками нужно создать функцию on_image(msg: str, img: Image). Изображения можно модифицировать. На данный момент поддерживается только добавление текста. Синтаксис: img.put_text(text, color), гдеcolor — это RGB-кортеж, например, (255, 0, 0). Изображения можно модифицировать даже если они открыты из файла: Image(image_filename).put_text(text, color)

from tgbotzero import *

TOKEN = '123:tokenHereFromBotFatherInTelegram'

def on_message(msg: str):
    return 'Жду картинку с подписью!'

def on_image(msg: str, img: Image):
    return img.put_text(msg, (255, 0, 0))

run_bot()
puttext

Получение chat_id:

К любой функции-обработчику можно добавить ещё один параметр chat_id: int, если хочется различать пользователей.

from tgbotzero import *

TOKEN = '123:tokenHereFromBotFatherInTelegram'


def on_message(msg: str, chat_id: int):
    return f"Текущий chat id: {chat_id}"


run_bot()

Contributing

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tgbotzero-0.0.9.tar.gz (4.6 MB view hashes)

Uploaded Source

Built Distribution

tgbotzero-0.0.9-py3-none-any.whl (3.4 MB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page