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 details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

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

Uploaded Python 3

File details

Details for the file tgbotzero-0.0.9.tar.gz.

File metadata

  • Download URL: tgbotzero-0.0.9.tar.gz
  • Upload date:
  • Size: 4.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.1

File hashes

Hashes for tgbotzero-0.0.9.tar.gz
Algorithm Hash digest
SHA256 b81f8b1fa1428742db813cc9a55c530b321fc94071b293821d4b656d4ee0e48d
MD5 3b636515c4b46be278b73257d83d882c
BLAKE2b-256 322ea0d9bc721c89e48293252acebdc6a9c0134432a1c8d7d8d06529e8cfb183

See more details on using hashes here.

File details

Details for the file tgbotzero-0.0.9-py3-none-any.whl.

File metadata

  • Download URL: tgbotzero-0.0.9-py3-none-any.whl
  • Upload date:
  • Size: 3.4 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.1

File hashes

Hashes for tgbotzero-0.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 a508be0c14527b5b3d6e6bd8cd5d6ebbb0395cd8d4102c82760ab6cae82f2598
MD5 ee6a96082bf244e0cb25a81c83150c96
BLAKE2b-256 3a92b1d0c4fdb18b0fc732d3ea474bc7efbbca813dedc13a5d9f7c02b5a70159

See more details on using hashes here.

Supported by

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