Skip to main content

Lib that helps with telegram bots

Project description

Менеджер экранов для Телеграм-ботов

tg_bot_screen - это Python библиотека для упрощения создания телеграм ботов на базе python-telegram-bot и других фреймворках.

Ссылки

GitHub

https://github.com/Neveix/tg_bot_base

PyPI (pip)

https://pypi.org/project/tg-bot-screen/

Table of Contents

Основные возможности

Экраны

Позволяют легко переключаться между заранее известными меню

Например. В вашем боте есть главное меню, из которого кнопки ведут в 3 других меню. Для этого вы можете заранее создать всевозможные меню, и организовать систему переходов между ними.
Не придётся переписывать и дублировать меню несколько раз

Пользовательский ввод

Режим пользовательского ввода позволяет принимать от пользователя сообщение в нужный момент, и выходить из этого режима, когда будет нужно.

Это может пригодиться в очень многих ситуациях, когда после нажатия на кнопку или после ввода сообщения нужно принять от пользователя ввод. Для этого бот переключается в режим ожидания ввода, и после того, как пользователь ввёл что-то, вызвалась пользовательская callback-функция

Строгие типы

Снижают количество ошибок, которые могут быть допущены.

В телеграмме клавиатура представляется как двойной массив кнопок. Когда клавиатуры приходится динамически создавать, добавлять к ним строки, кнопки, многократно увеличивается возможность ошибиться. И только после Runtime Error разработчик узнаёт, что допустил ошибку, но даже в этот момент он может не понять, чем она была вызвана. TBS исключает такую возможность: Клавиатура, строка кнопок, кнопка, меню, экран в нём - это отдельные классы, в некоторых из которых прописаны выкидывание ошибок из-за несоответствия типов.

Динамичность

Экраны, меню, текст, клавиатуры в TBS имеют возможность быть динамическими, и генерироваться в моменте.

Это может пригодиться в любых не самых простых ботах, в которых экраны хоть как-то могут меняться. Экран будет создаваться в моменте под определённую ситуацию. Так же это можно использовать для ботов, переведённых на несколько языков

Структура

Архитектура проекта построена вокруг класса BotManager, в котором собраны прочие менеджеры

Установка и использование

Есть 2 варианта как начать разработку с tg_bot_screen:

  1. Инициализировать проект с помощью встроенного генератора
  2. Начать с минимально рабочего примера

Скачайте зависимости: pip install tg_bot_screen python-telegram-bot

Инициализация проекта

  1. Создайте директорию с вашим проектом
  2. Инициализируйте проект: python -m tg_bot_screen --ptb
  3. Добавьте переменную окружения BOT_TOKEN с вашим токеном бота из BotFather
  4. Запустите бота с помощью python run.py

Минимально рабочий пример

from telegram import Update
from telegram.ext import Application, CommandHandler

from tg_bot_screen.callback_data import GoToScreen, StepBack
from tg_bot_screen.ptb import BotManager
from tg_bot_screen.ptb.button_rows import ButtonRows, ButtonRow, Button
from tg_bot_screen.ptb.messages.simple_message import SimpleMessage


token = "YOUR_TOKEN"

app = Application.builder().token(token).build()

botm = BotManager(app).build()

async def start_callback(update: Update, _):
    user_id = update.message.from_user.id 
    print(f"{user_id} has typed /start")
    await botm.screen.set_by_name(user_id, "welcome")

app.add_handler(CommandHandler("start", start_callback))
botm.add_handlers()

@botm.dynamic_screen()
async def welcome(user_id: int, **kwargs):
    text = "Welcome screen"
    button_rows = ButtonRows(
        ButtonRow(Button("Second screen", GoToScreen("screen2")))
    )
    return [SimpleMessage(text, button_rows)]

@botm.dynamic_screen()
async def screen2(user_id: int, **kwargs):
    text = "Second screen"
    button_rows = ButtonRows(
        ButtonRow(Button("Back", StepBack()))
    )
    return [SimpleMessage(text, button_rows)]


print("Polling...")
app.run_polling(0.1)

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

tg_bot_screen-1.4.44.tar.gz (14.7 kB view details)

Uploaded Source

Built Distribution

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

tg_bot_screen-1.4.44-py3-none-any.whl (25.4 kB view details)

Uploaded Python 3

File details

Details for the file tg_bot_screen-1.4.44.tar.gz.

File metadata

  • Download URL: tg_bot_screen-1.4.44.tar.gz
  • Upload date:
  • Size: 14.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for tg_bot_screen-1.4.44.tar.gz
Algorithm Hash digest
SHA256 88e68f467308bf0469a8a884c916fa4dbb38d6a9965781c6ef09a65405a4b4d3
MD5 3e140c9c5d24ec0157d87c6d8ef0a47d
BLAKE2b-256 d70da022424ecfab7717f2dc9ba7aaee713afa16d1c5fee4d5b0f7711e1354aa

See more details on using hashes here.

File details

Details for the file tg_bot_screen-1.4.44-py3-none-any.whl.

File metadata

  • Download URL: tg_bot_screen-1.4.44-py3-none-any.whl
  • Upload date:
  • Size: 25.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for tg_bot_screen-1.4.44-py3-none-any.whl
Algorithm Hash digest
SHA256 c22341ed79ad34c99706fc4d8fb5866a3acd8c81426a357016b616782f298fe0
MD5 9dccf1239abc1a8a01b47c22a055610b
BLAKE2b-256 b9da4ff4f1cb6472a4f167c5a01f40997c1ab6842c5e3ea384d07c4f4e9132ac

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