Herald - один бот для всех мессенджеров
Проект находится на стадии развития и не является стабильной версией
В данный момент проект поддерживает только:
В планах:
Как пользоваться?
Первым шагом надо настроить проект, в файле herald/local_settings.py
необходимо задать
WEBHOOK_SITE
- это обычный URL с шифрованием https
(для первого запуска и разработки можете использовать ngrok)
WEBHOOK_SITE = '<WEBHOOK_SITE_HERE>'
Задать токены для Viber и остальные переменные
VIBER_BOT = {
"VIBER_BOT_NAME": os.getenv('VIBER_BOT_NAME', '<NAME_BOT_HERE>'),
"VIBER_AUTH_TOKEN": os.getenv('VIBER_AUTH_TOKEN', '<TOKEN_VIBER_BOT_HERE>'),
"VIBER_AVATAR": os.getenv('VIBER_AVATAR', '<ULR_IMAGE_BOT_HERE>'),
'WEBHOOK_SITE': WEBHOOK_SITE,
'WEBHOOK_PREFIX': '/viber', # (Optional[str]) # If this value is specified,
}
Для настройки Telegram бота достаточно задать токен и все
DJANGO_TELEGRAMBOT = {
'MODE': 'WEBHOOK',
'WEBHOOK_SITE': WEBHOOK_SITE,
'WEBHOOK_PREFIX': '/bot',
'BOTS': [
{
'TOKEN': '<TOKEN_TELEGRAM_BOT>',
},
],
}
Вход пользователя осуществляется в файле herald_bot/states/main.py
в классе BootStrapState
.
class BootStrapState(State):
def on_enter(self, trigger):
"""Срабатывает при входе пользователя в новое состояние/экран/класс"""
pass
def on_trigger(self, trigger):
"""Обрабатывает нажатия кнопок"""
trigger.send_message("Привет, это Herald, я один и я везде")
return BootStrapState() # Переход в другое состояние/экран/класс
def on_exit(self, trigger):
"""Срабатывает при выходе пользователя в новое состояние/экран/класс"""
pass
Как отправлять сообщения? И что находиться в тригере?
trigger.text # Текст от пользователя
trigger.messenger # месенджер от которого пришло сообщение 0 - Telegram 1 - Viber
trigger.user_id # id пользователя/чата chat_id в Телеграм user_id в Viber
trigger.state # состояние пользователя, экземпляр класса
trigger.get_user() # Возвращяет пользователя из bd Django model
trigger.create_user() # Создание пользователя
trigger.send_photo(image_path) # Отправка фотографии image_path - путь к фотографии
trigger.send_message(message) # Отправка сообщения message - текст сообщения
trigger.send_keyboard(message, buttons) # Отправка сообщения c клавиатурой message - текст сообщения buttons - массив кнопок
Основаны на библиотеках: