Awesome
'Slovodel' Telegram Bot
Making non-existent Russian words using Markov chains. Бот, который придумывает несуществующие русские слова.
ПОСМОТРЕТЬ В ДЕЙСТВИИ / TRY IT OUT↗️
RIP free Heroku
Посвящается Велимиру Хлебникову.
Фармакология
Генерация псевдослов с помощью цепей Маркова на основе корпуса, полученного алгоритмическим делением на слоги слов из русского частотного словаря.
Показания к применению
- Экстремальный нейминг
- Острый переизбыток семантики
- Развлекательная недостаточность
Ещё одна цель проекта - реализовать на практике:
- паттерн MVC на Python
- современный целостный подход к разработке на Python, описанный в этой серии статей↗️
лучшие практики для работы с конфигурацией в Python, предложенные здесь↗️Не надо так, делайте всё через Pydantic :)
Поэтому его структура немного сложнее обычного.
Способ применения и дозы
Установка и запуск
$ git clone https://github.com/weiss-d/slovodel-bot.git
$ cd slovodel-bot
$ pip install -r requirements.txt
# настроить конфигурацию как описано ниже
$ nano bot_config.toml
# загрузить словари в базу данных Redis
# если есть пароль, дописываем его в конце каждой команды
$ python slovodel_bot/utils/redis_upload_dict.py ../resources/dictionaries/nouns.txt SLOVODEL_DICT 127.0.0.1 6379 0
$ python slovodel_bot/utils/redis_upload_dict.py ../resources/dictionaries/adjectives.txt SLOVODEL_DICT 127.0.0.1 6379 0
$ python slovodel_bot/utils/redis_upload_dict.py ../resources/dictionaries/verbs.txt SLOVODEL_DICT 127.0.0.1 6379 0
# можно запускать!
$ python -m slovodel_bot
Настройка
Дефолтный конфиг bot_config.toml
лежит в корне репозитория.
В нём нужно прописать токен, полученный от Bot Father, а так же координаты Redis, если база запущена не локально - это делается в самой нижней секции конфига.
Так же при желании изменить приветсвтенное сообщение можно отредактировать файл slovodel_bot/resources/welcome_message.md
.
Heroku
Помимо стандартных процедур по созданию приложения, описанных в документации Heroku, необходимо задать переменную окружения HEROKU_APP_NAME
, содержащую имя вашего приложения из настоек:
$ heroku config:set HEROKU_APP_NAME=имя_вашего_приложения
Файлы Procfile
, requirements.txt
и runtime.txt
содержат все необходимые инструкции и готовы к запуску. Если хотите сделать для Heroku отдельный файл конфигурации, то путь к нему нужно прописать в Procfile
в качестве аргумента к heroku.py
.
TODO
- Добавить логи
- Добавить обработку исключений python-telegram-bot
Вопросы / Предложения
По всем вопросам и предложениям не стесняясь открывайте issue.
Состав
- markovify - основа модели, отвечающая за формирование слов.
- python-telegram-bot - самая популярная обёртка Telegram Bot API из кожи питона.
- click - библиотека для лёгкого и безболезненного создания CLI-интерфейсов в Python.
- dacite - библиотека для преобразования словарей в dataclass'ы.
- rusyll - моя библиотека для алгоритмического деления русских слов на слоги.