- Регистрация
- 3 Июн 2019
- Сообщения
- 224
- Лучшие ответы
- 3
- Репутация
- 68
Всем привет, сегодня продолжим заниматься строением ботов на Python, используя библиотеку Telebot! Сегодня мы с Вами будем делать бота, который будет возвращать всё то, что Вы напишете ему в чате. Звучит хайпово, да?) Поехали!
Для тех, кто не создал бота в BotFather, советую обратиться в гугл и найти соответствующий запрос по их созданию — это не тяжело. Я буду использовать PyCharm в качестве среды разработки и библиотеку python-telegram-bot, предоставляющая чистый Python-интерфейс для Telegram Bot API. Пример кода будет в конце статьи.
Что нужно для создания бота?
Первое, это мы создадим папку py_bot, в которой создадим echo_bot.py и откроем в редакторе кода.
Теперь мы поставим себе библиотеку python-telegram-bot с помощью следующей команды, введя ее в cmd.exe.
Вводим в консоль (cmd):
Теперь приступим непосредственно к самому написанию нашего кода.
Будем импортировать из нашего модуля
Что это за модули? Вот, описание к ним:
Она будет использоваться для того, чтобы отправить ответное сообщение команде /start.
Для закрепления навыков, создадим похожую функцию, которая при команде/help, отправит команду « Помогите » в ответ!
Затем реализуем основную и ключевую функцию, которая будет повторять отправленный текст пользователя и дублировать его.
Теперь нам нужно связать все эти непонятные для многих функции, не так ли? Let`s Go!
Давайте теперь реализуем функцию
Чтобы код запустился, добавим кнопку Run и запустим её:
Ну вот и всё, вот у нас и получился наш бот! А тем, кто хочет заняться разработкой Telegram-ботов, посоветую Вам начать с изучения своего кода, который мы написали выше, я бы скинул всю документацию к Telegram Bot API, но правилами форума запрещено. До новых встреч, друзья!
Вот полный код, который у нас должен получиться:
Для тех, кто не создал бота в BotFather, советую обратиться в гугл и найти соответствующий запрос по их созданию — это не тяжело. Я буду использовать PyCharm в качестве среды разработки и библиотеку python-telegram-bot, предоставляющая чистый Python-интерфейс для Telegram Bot API. Пример кода будет в конце статьи.
Что нужно для создания бота?
- Среда разработки или любой редактор кода, в котором будем писать код для бота,
- Установленный Python версии 3.5 и выше;
- Смекалка и умение думать;
- Созданный в BotFather бот;
Первое, это мы создадим папку py_bot, в которой создадим echo_bot.py и откроем в редакторе кода.
Теперь мы поставим себе библиотеку python-telegram-bot с помощью следующей команды, введя ее в cmd.exe.
Вводим в консоль (cmd):
pip install python-telegram-bot --upgrade
Теперь приступим непосредственно к самому написанию нашего кода.
Будем импортировать из нашего модуля
telegram.ext
файлы: Updater, CommandHandler, MessageHandler, Filters.
Python:
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
- Updater получает обновления от Telegram и доставляет их диспетчеру.
- CommandHandler обрабатывает команды Telegram'а.
- MessageHandler обрабатывает сообщения Telegram'а.
- Filters помогает фильтровать сообщения MessageHandler'a.
start()
, которая выведет сообщение «Привет! Я Эхо-Бот, повторяю всё то, что ты мне напишешь! »Она будет использоваться для того, чтобы отправить ответное сообщение команде /start.
Python:
def start(update, context):
update.message.reply_text('Привет! Я Эхо-Бот, повторяю всё то, что ты мне напишешь! :-)')
Python:
def help_command(update, context):
update.message.reply_text('Help!')
Python:
def echo(update, context):
update.message.reply_text(update.message.text)
Давайте теперь реализуем функцию
main()
, в которой:- Диспетчер сможет получать наши обработчики
(handlers) dp = updater.dispatcher
, - Добавим новый класс
updater = Updater('ваш токен', use_context=True)
, - Реализуем новые обработчики
CommandHandler /start и /hel. dp.add_handler(CommandHandler("start", start)) dp.add_handler(CommandHandler("help", help_command))
, - Так же сделаем новый обработчик:
MessageHandler
, который первым аргументом примет фильтрыFilter.text
и~Filters.command
, где символ ~ означает "не", то есть в нашем случае разрешает текст и не разрешает реагировать на команды. Вторым аргументом принимается коллбэк функция, у нас это функцияecho(). dp.add_handler(MessageHandler(Filters.text & ~Filters.command, echo))
, - Запустим запрашивание обновлений от Telegram.
updater.start_polling()
, - Чтобы код после запуска сразу же не отключился, добавим
updater.idle()
, чтобы наш код « Застыл » в ожидании действий пользователя до тех пор, пока мы сами не выключим его.
Python:
def main():
updater = Updater(
"1173900008:AAEH1M8St4toafkR0KX-KiREt4bGjMKInpc", use_context=True)
dp = updater.dispatcher
dp.add_handler(CommandHandler("start", start))
dp.add_handler(CommandHandler("help", help_command))
dp.add_handler(MessageHandler(Filters.text & ~Filters.command, echo))
updater.start_polling()
updater.idle()
Python:
if __name__ == '__main__':
main()
Вот полный код, который у нас должен получиться:
Python:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
def start(update, context):
update.message.reply_text('Привет! Я бот, повторяющий слова, написанные тобой в чате.')
def help_command(update, context):
update.message.reply_text('Help!')
def echo(update, context):
update.message.reply_text(update.message.text)
def main():
updater = Updater(
"1173900008:AAEH1M8St4toafkR0KX-KiREt4bGjMKInpc", use_context=True)
dp = updater.dispatcher
dp.add_handler(CommandHandler("start", start))
dp.add_handler(CommandHandler("help", help_command))
dp.add_handler(MessageHandler(Filters.text & ~Filters.command, echo))
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
Последнее редактирование: