Python Django package repository template
Project description
Django Telegram Framework
Библиотека (Framework) для быстрого создания Telegram ботов и интеграции с django
Тут можно найти Полную документацию проекта
Workflows
Package
Support
Downloads
Languages
Development
Menu
- Идея проекта
- Проект с открытым исходным кодом
- Отличие от других Telegram проектов
- Функции библиотеки
- Зависимости
- Статус разработки
- Установка
- Быстрый старт
- Тестирование
- Внести свой вклад в проект
Идея проекта
Создать удобный и надежный framework для быстрого и удобного создания telegram ботов который:
- Имеет чёткую структуру модулей
- Может использовать разные библиотеки для взаимодействия с telegram (pyTelegramBotAPI, Telethone, python-telegram-bot, aiogram и другие)
- Позволяет быстро реализовать start-up проект одному разработчику или в небольшой команде
- Имеет интеграцию с django для создания web страниц и использования django admin
- Быстро подключается к базе данных с помощью Django ORM
Проект с открытым исходным кодом
Это проект с открытым исходным кодом с лицензией Happy Code.
- Свободное использование
- создание Forks
- публикация issues и bugs
- contributions
очень приветствуются
Отличие от других Telegram проектов
В отличие от библиотек для создания telegram ботов, таких как pyTelegramBotAPI, aiogram, python-telegram-bot и других, этот проект (Framework) имеет чёткую структуру, похожую на структуру django проектов. Framework содержит следующие элементы:
- models - модели данных связанные с базой данных с помощью Django ORM
- actions - обработчики событий telegram bot-а (аналогия с django views)
- links - связь команд и событий бота с обработчиками (аналогия с django urls)
- settings - настройки для всего проекта - django settings
- tests - тесты логики бота с использованием специального Dummy Bot
Под капотом Framework может использовать разные библиотеки в синхронном и асинхронном исполнении. Можно переключать одни библиотеки на другие. Без соединения с telegram (например в DEV) режиме, можно использовать Dummy Bot для разработки и тестирования.
Интеграция с django позволяет:
- Добавить web site
- Использовать django админку
- Использовать django ORM
Функции библиотеки
- Интеграция telegram бота в django проект
- Понятная структура и интерфейсы для разработки бота
- Функции автоматического тестирования бота
- Совместимость с синхронным pyTelegramBotAPI
- Совместимость с асинхронным pyTelegramBotAPI (В разработке)
- Совместимость с синхронным python-telegram-bot v13.15
- DummyBot для тестирования и работы без подключения к telegram
- Функции телеграм бота (Будут добавляться по мере надобности, пожалуйста напишите, если вам нужна новая функция)
- Совместимость с aiogram, python-telegram-bot, Telethone (На этапе планирования)
Зависимости
- django > 5
- pyTelegramBotAPi (Нужно установить отдельно)
- Для python-telegram-bot==13.15 нужны дополнительно следующие зависимости:
- python-telegram-bot==13.15
- urllib3==1.26.15
- standard-imghdr==3.13.0
- Подробности в Полной документации
Статус разработки
Написана и проверена 2-ая сырая версия библиотеки с небольшим набором функций
- Пакет уже доступен в PyPi
- Подробности в Полной документации
Установка
with pip
pip install django-telegram-framework
Подробности в Полной документации
Быстрый старт
- Добавить
telegram_frameworkвINSTALLED_APPS
INSTALLED_APPS = [
'...',
'telegram_framework',
'...',
]
- Создать django проект
- Создать django приложение
python manage.py startapp quickstart
- В приложении создать файл
bot.py - Пример кода в файле
bot.py
from telegram_framework import (
messages,
actions,
links,
)
# ОПИШИТЕ ОБРАБОТЧИКИ СОБЫТИЙ БОТА
def send_greetings(bot, message):
# Используйте специальный тип для сообщений
greetings_message = messages.create_message(
'Приветствую тебя. Я Quickstart Telegram Bot',
sender=bot
)
# Отправьте сообщение в телеграмм
return actions.send_message(message.chat, greetings_message)
def reply_to_message(bot, message):
# Используйте специальную функцию для создания ответа
reply = messages.create_reply(message, 'Тебе отвечает Bot', sender=bot)
# Отправьте ответ в телеграмм
return actions.send_reply(reply)
# СВЯЖИТЕ ОБРАБОТЧИКИ С ДЕЙСТВИЯМИ ПОЛЬЗОВАТЕЛЯ В TELEGRAM
bot_links = [
links.on_command(send_greetings, 'start'),
links.on_command(send_greetings, 'help'),
links.on_message(reply_to_message),
]
- В
settings.pyпроекта добавить следующие настройки:
TELEGRAM_BOT_TOKEN = '7777777777:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
TELEGRAM_BOT_TYPE = 'pyTelegramBotAPI'
ROOT_BOT_LINKS = 'quickstart.bot'
- Установить
pyTelegramBotAPI
pip install pyTelegramBotAPI
- Запустить Бота
python manage.py run_bot
Больше примеров в Полной документации
Тестирование
Django Telegram Framework позволяет удобно тестировать код бота без подключения к telegram.
Для этого используется специальный DummyBot
- В
settings.pyпроекта внесите следующие изменения:
TELEGRAM_BOT_TOKEN = '0'
TELEGRAM_BOT_TYPE = 'Dummy'
- Пример написания тестов для бота из
quickstartприложения
from telegram_framework.test import SimpleTestCase
class TestCommands(SimpleTestCase):
def test_start(self):
"""
Test /start: success
"""
# Бот должен реагировать на сообщения
chat = self.assertCommandWasHandled('/start', self.chat)
# Последнее сообщение в чате должно содержать приветствие
self.assertChatLastMessageTextEqual(chat, 'Приветствую тебя. Я Quickstart Telegram Bot')
def test_any_text_message(self):
"""
Test send any text message: success
"""
# Бот должен реагировать на сообщение,
chat = self.assertTextMessageWasHandled('quickstart message', self.chat)
# Последнее сообщение должно содержать ответ бота
self.assertChatLastMessageTextEqual(chat, 'Тебе отвечает Bot')
- Запустить django тесты
python manage.py test
Внести свой вклад в проект
Без проблем! Для быстрого старта можно ознакомиться с:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_telegram_framework-5.6.0.tar.gz.
File metadata
- Download URL: django_telegram_framework-5.6.0.tar.gz
- Upload date:
- Size: 32.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
570a51e7ad89e604ab6f718434c00db7fdf07e8d6efab9038de42b94626f3016
|
|
| MD5 |
fa4013b6c3fdf49762e98ab1d0601214
|
|
| BLAKE2b-256 |
65229b224a39f95989426ad87ad545747c4baedb071b15a660ffe23ae514464b
|
File details
Details for the file django_telegram_framework-5.6.0-py3-none-any.whl.
File metadata
- Download URL: django_telegram_framework-5.6.0-py3-none-any.whl
- Upload date:
- Size: 60.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f1af272d197363820188a4cddd1869ffb330406fa5119239ffaf14a4f79018e5
|
|
| MD5 |
4de5ec3310b8dd30e3e991decab43d3f
|
|
| BLAKE2b-256 |
545f3ab6555a497451c7508d79237d1175fa65a089ce503612007856d4b52f2e
|