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