Добро пожаловать на Pawno-Info.Ru - Портал о программировании №1

Присоединяйтесь к нам сейчас, чтобы получить доступ ко всем нашим функциям и ответы на все интересующие Вас вопросы. После регистрации Вы сможете создавать темы, публиковать ответы, влиять на репутацию пользователей форума, обмениваться личными сообщениями и многое другое. Это быстро и совершенно бесплатно, так чего же Вы ждете?

Маппинг для сервера

Если вы хотите обновить Ваш сервер новыми доработками - то зайдите в наш раздел. Большой выбор готовых решений от наших пользователей

Моды для сервера

Огромный выбор различных модификаций для Вашего сервера. Пролистайте эти темы! Возможно именно там Вы найдете то, что искали уже давно.

Модификации SA

Хотите разнообразить свою игру в San Andreas? Смелее в наш раздел. Отличный сборник готовых решений. Играйте с удовольствием

Oleg Polikhronidi

Заблокирован
Пользователь
Регистрация
3 Июн 2019
Сообщения
225
Лучшие ответы
4
Репутация
53
Адрес
Tashkent, Uzbekistan.
Всем привет, сегодня продолжим заниматься строением ботов на Python, используя библиотеку Telebot! Сегодня мы с Вами будем делать бота, который будет возвращать всё то, что Вы напишете ему в чате. Звучит хайпово, да?) Поехали!

Для тех, кто не создал бота в 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('Привет! Я Эхо-Бот, повторяю всё то, что ты мне напишешь! :-)')
Для закрепления навыков, создадим похожую функцию, которая при команде/help, отправит команду « Помогите » в ответ!
Python:
def help_command(update, context):
update.message.reply_text('Help!')
Затем реализуем основную и ключевую функцию, которая будет повторять отправленный текст пользователя и дублировать его.
Python:
def echo(update, context):
update.message.reply_text(update.message.text)
Теперь нам нужно связать все эти непонятные для многих функции, не так ли? Let`s Go!

Давайте теперь реализуем функцию 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()
Чтобы код запустился, добавим кнопку Run и запустим её:
Python:
if __name__ == '__main__':
main()
Ну вот и всё, вот у нас и получился наш бот! А тем, кто хочет заняться разработкой Telegram-ботов, посоветую Вам начать с изучения своего кода, который мы написали выше, я бы скинул всю документацию к Telegram Bot API, но правилами форума запрещено. До новых встреч, друзья! :)

Вот полный код, который у нас должен получиться:
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()
 
Последнее редактирование:
  • Мне нравится
Реакции: PIRU
shape1
shape2
shape3
shape4
shape7
shape8
Сверху Снизу