Programming simple chatbot for Telegram

Currently this post is available only in russian (will translate it soon…)
Примерный план:
- Склонировать репозиторий
TinyTelegramBot, в котором лежат необходимые файлы:git clone https://github.com/akarazeevprojects/TinyTelegramBot - Определиться с его названием (придумать username) -> с помощью специального бота
@BotFatherполучить токен для твоего бота (для идентификации его в системе Телеграм) - Реализовать бота. Представленный здесь код будет написан на Python’e и с использованием библиотеки
python-telegram-bot - Поднять
socks-proxyсервер на порте9050(получится адрес127.0.0.1:9050)
Получение токена
Просим @BotFather создать нового бота, сообщаем название/username/etc. -> получаем токен. Токен имеет следующий вид:
111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Теперь его необходимо поместить в файл EMPTY_TOKEN.json вместо <YOUR_TOKEN>.
Переименовываем файл EMPTY_TOKEN.json -> token.json.
На всякий случай! Все указанные здесь файлы из репозитория TinyTelegramBot. Его надо было скачать первым делом.
Бот. Реализация
Если на твоей машине не стоит питоновская библиотека python-telegram-bot, то её необходимо поставить с помощью команды
pip install python-telegram-bot --upgrade
(для справки: python-telegram-bot).
Вдаваться в подробности каждого объекта не будем, объясню основные моменты.
Начнём с метода .add_handler() — добавление хэндлеров
Внутри файла main.py есть такие строчки:
1
2
3
dp.add_handler(CommandHandler('start', start))
dp.add_handler(CommandHandler('help', help))
dp.add_handler(MessageHandler(Filters.text, response))
Хэндлер — метод, который будет вызван в ответ на какую-то команду, либо же тип сообщения — как на третьей строчке.
Первыми двумя строчками задаётся действие бота на команды /start и /help соответственно (в кавычках название команды).
Например,
CommandHandler('command_title', process_something)
означает, что по команде /command_title будет вызываться функция process_something().
Рассмотрим простую функцию start(), которая выступает в качестве хэндлера для команды /start:
1
2
3
def start(bot, update):
update.message.reply_text(start_text)
return
Аргументы bot и update должны присутствовать. Из update можно получить текст сообщения пользователя, id пользователя и многое другое.
Эта функция start() всего лишь отправляет текст start_text в ответ на вызов команды /start.
На всякий случай! Все указанные здесь файлы из репозитория TinyTelegramBot. Его надо было скачать первым делом.
Осталось поднять proxy на порте 9050
Думаю, ты справишься с этим :) Просто погугли “install proxy 9050” или что-то в таком духе.
Запуск
Для запуска бота необходимо выполнить python main.py. Если высветилось “-> USE PROXY”, то всё ок — можно слать сообщения боту.
Ввиду того, что я редко пишу подобные длинные посты, читать их будет определённо не так же кайфово как какую-нибудь художественную литературу. Сорян, я работаю над собой в этом направлении и надеюсь, что результаты станут скоро заметны.
А на этот раз всё, буду рад услышать комментарии/пожелания/замечания/… от тебя — для связи со мной можешь использовать любой удобный способ, перечисленный в моих контактах. Но лучше — писать в телеге @akarazeev ![]()
Leave a comment