Как написать бота в Телеграмме на python telebot

Телеграм боты — это крутой способ взаимодействия с пользователем прямо в привычном ему мессенджере. Это гораздо быстрее и чаще удобнее, чем писать полноценное мобильное приложение. Сегодня мы с вами разберемся, как они работают, и создадим несколько собственных ботов.

Вспоминая функции

Функция — это часть кода программы, которую можно повторно использовать. У функции есть имя, список параметров и возвращаемое значение.

Возвращаемое значение — это результат работы функции. Рассмотрим простой пример:

def getTwo(): return 2 a = getTwo() print(a)

В данном примере мы определили функцию getTwo , она не принимает параметров и всегда возвращает ( return ) число 2. Написав a = getTwo() , мы вызвали функцию и результат ее работы попал в переменную a . На следующей строчке программа выведет 2 .

Список параметров (или аргументов) — это значения, которые необходимы функции для выполнения задачи. Рассмотрим второй пример:

def sum(a, b): return a + b print(sum(23, 5)) # выведет 28 print(sum(-3, 6)) # выведет 3

Здесь функция принимает два параметра и возвращает их сумму.

Создание телеграм-ботов на python (telebot) #7 / Отправка файлов в телеграм боте

Внутри функций мы можем использовать любые переменные и операции с единственным ограничением:

  1. переменные внутри функции недоступны вне этой функции;
  2. переменные извне функции доступны только для чтения (если не испольуется ключевое слово global ).

Телеграм боты

Телеграм бот — это программа, которая запущена на вашем компьютере и общается с серверами телеграма через интернет. Можно представить, что при регистрации бота, телеграм выделяет нам почтовый ящик, через который мы можем получать сообщения от пользователей и отправлять их им.

Далее мы с вами научимся писать программы на питоне, которые, используя этот токен, смогут общаться с пользователями.

Устанавливаем библиотеки

Одно из ключевых преимуществ питона — наличие огромного количества встроенных и сторонних библиотек. Для того, чтобы сделать телеграм-бота, который будет присылать нам статьи из википедии по нашему запросу, нам потребуется установить сразу три библиотеки.

  • pyTelegramBotApi — для создания бота.

Для установки сторонних библиотек вместе с питоном на компьютер устанавливается программа pip.exe , которая умеет автоматически находить и скачивать библиотеки по их названию. Единственный нюанс — она работает только через командную строку (терминал).

Еще по теме:  Что делать если при просмотре кружков в Телеграмме выключается телефон

Чтобы установить библиотеки нам потребуется открыть командную строку и последовательно ввести три команды.

pip install pytelegrambotapi

PS. Если у вас установлен питон, но компьютер все равно не находит pip, путь к нему нужно добавить в системную переменную PATH.

PS. Если у вас потребуют права администратора, можно поставить библиотеки только для текущего пользователя.

КАК ОТКРЫТЬ СВОЙ МАГАЗИН В TELEGRAM | TELEGRAM БОТ НА PYTHON


pip install —user pytelegrambotapi

Бот-попугай

Давайте сделаем нашего первого бота — бота-попугая. На все сообщения он будет отвечать повторением.

Помимо текстовых сообщений, в телеграме есть команды, они начинаются со слэша, например, /start или /help . Их тоже можно обрабатывать.

Давайте добавим пояснение к нашему боту, которое объяснит пользователю, что он делает.

Стикеры

Еще пример: бот, которому можно прислать стикер и получить стикер в ответ (он запоминает ранее присланные стикеры от всех пользователей).

Что такое словарь?

Списки — это очень круто! Можно хранить много данных и не придумывать имя каждому элементу. Но.

Рассмотрим другую задачу: нам нужно сделать базу клиентов для магазина комиксов. Магазин хочет помнить имя, возраст и любимые комиксы каждого клиента. Мы можем попробовать складывать это в список, но получится примерно так:

clients = [«Петька», 23, [«Майор гром», «Супермен»], «Чапаев», 43, [«Бэтмен»]]

Получаются тройки элементов, где первый элемент это имя, второй — возраст, а дальше список любимых комиксов. Жить, конечно, можно. Но ведь явно должен быть способ лучше. Да, и это — словари.

Вспомним коридор отеля, в котором на дверях написаны номера. Можно провести модернизацию и повесить на двери имя жильца вместо номера. Такой номер будет называться ключем, а сам жилец — значением.

Более естественный пример — это обычный бумажный словарь. Это книга, в которой перечислены слова и их определения. Слова — это ключи, а определения — значения.

Словарь — множество пар ключ-значение.

В примере выше весь список клиентов — это и правда список, а вот отдельный клиент тянет на словарь.

Один клиент будет выглядеть так:

client = # это словарь

А весь список клиентов:

clients = [ , ] # это список словарей

Как работать со словарями?

Работа со словарями очень похожа на работу со списками, только вместо номера элемента используется его ключ (имя).

client = print(«Как зовут клиента?») print(client[«name»]) print(‘-‘ * 15) print(«Сколько ему лет?») print(client[«age»]) print(‘-‘ * 15) print(«А можно вывести всю информацию о нем?») print(client) # print(‘-‘ * 15) print(«А в столбик?») for key in client: print(«<> — <>».format(key, client[key])) # словарь это много пар ключ-значение. Чтобы посмотреть на все элементы надо перебрать все ключи print(‘-‘ * 15) print(«Он любит кошек или собак?») if «pet» in client: print(client[«pet»]) else: print(«Мы не знаем») # так можно проверить, есть ли ключ в словаре print(‘-‘ * 15) print(«Он любит кошек, запишите это!») client[«pets»] = «кошка» print(client) # так можно добавить в словарь новый элемент # print(‘-‘ * 15) print(«Возраст не нужен, удалите!») del client[«age»] print(client) # удаляем элемент и словаря # print(‘-‘ * 15) # кстати, можно вывести все ключи: print(list(client.keys())) # [‘name’, ‘favorites’, ‘pets’] print(‘-‘ * 15) # и отдельно все значения print(list(client.values())) # [‘Петька’, [‘Майор гром’, ‘Супермен’], ‘кошка’] print(‘-‘ * 15) # а еще из словаря можно сделать список пар, вот так: print(list(client.items())) # [(‘name’, ‘Петька’), (‘favorites’, [‘Майор гром’, ‘Супермен’]), (‘pets’, ‘кошка’)] print(‘-‘ * 15) print(«Ксати, он говорил, что бэтмен тоже ничего.») client[«favorites»].append(«Бэтмен») print(client) #

Еще по теме:  Кто такой цветаев Телеграмм

Привязка данных к пользователю

Предположим мы хотим сделать бота, которы будет запоминать какую-то фразу, а затем по просьбе пользователя напоминать ее ему. Чтобы решить эту задачу, нам понадобится где-то хранить последнее сообщение пользователя.

Если мы будем использовать переменную, то сможем сохранить сообщение только одного пользователя. Например, Вася попросил запомнить слово kitten . Мы положим эту строку в переменную note . А затем Петя, попросить запомнить слово puppy , и мы снова положим это переменную note . Когда Вася попросит нам напомнить его последнее сообщение, мы напишем ему puppy вместо kitten . Совершенно не годится!

Удобнее всего хранить все данные, которые привязаны к конкретному пользователю в словаре. Ключем в этом словаре будет id пользователя, а значением — произвольные данные.

Предположим, что наш словарь называется notes — заметки. Теперь, когда Вася (id88000) пришлет слово kitten мы положим его в notes[88000] , а слово puppy от Пети (id5300) — в notes[5300] . Посколько теперь мы используем разные переменные для хранения слова, сообщения от разных пользователей не будут путаться.

Реализация:

Запланированный ответ на конкретное сообщение

Иногда нам приходиться проводить пользователя через конкретную цепочку вопросов, и проще всего сделать это с помощью функции bot.register_next_step_handler . Она позволит нам создать сразу много функций (как и в обычном квесте) и в ответ на сообщения от пользователя последовательно вызывать нужную.

Попробуем с ее помощью провексти квест.

Получение фотографий

Следующий пример показывает, как скачать и сохранить картинку, которую прислал пользователь. Не забудьте создать папку images, в которую мы будем сохранять полученные картинки.

Отправка сообщений в произвольное время

Ваш телеграм бот может писать пользователю в произвольное время, если пользователь хоть раз с ним контактировал и вы запомнили id чата с ним.

Еще по теме:  Как восстановить Телеграм после переустановки Виндовс

В примере ниже после команды /spam бот будет отправлять пользователю сообщение каждые несколько секунд. Для этого используется многопоточность — в одном потоке осуществляется обновление сообщений с сервера телеграма, а во втором — отправка сообщений всем пользователям каждые несколько секунд.

Получаем аудиосообщения

Источник: codingprojects.ru

Блог дяди Freemanа

Telegram bot (library pyTelegramBotAPI) / Бот Телеграма (библиотека pyTelegramBotAPI)

Для домашних нужд решил я завести себе бота Telegram, дабы получать оповещения и статусы от домашних устройств и автоматики. Сделать все это я решил на Python, поскольку не хотел слишком углубляться в детали, уровня абстракции этого языка вполне достаточно для этой работы.

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

1. Подготовка окружения

Как уже сказал выше, для работы бота я использовал готовую библиотеку pyTelegramBotAPI, а значит нам потребуется python, я писал на версии 3.6 под систему ubuntu 18.04 LTS. Все, что надо установить при такой конфигурации это сам python3, pip3 и, конечно, библиотеку.

apt-get update
apt-get install python3
apt-get install python3-pip
pip3 install pyTelegramBotAPI

Теперь все готово для того, чтобы кодить самого бота.

2. Код бота

Самое главное в коде это обработчики событий, то есть обработка того контента, который будет получать бот в ходе своей работы.

Так как бота мы уже создали, у нас есть токен авторизации.

Важное примечание. Запуская бота, имейте ввиду, что есть определенные нюансы, например, вдруг если он упадет, но сообщения боту будут продолжать поступать от пользователей, они накопятся в серверах Телеграма в течении 24 часов и при выходе бота в сеть, прилетят все разом. Поэтому эту ситуацию в коде не забудьте продумать. Слить все сообщения или обработать, Вам решать.

Итак, начало файла telebot_handler.py выглядит так:

# -*- coding: utf-8 -*- import telebot from telebot import types

Тут я указываю, что использую кодировку utf8 — всегда так делаю в python скриптах, а также ссылаюсь на библиотеку telebot и модуль из нее же, там хранятся типы нужных объектов для бота.

bot = telebot.TeleBot(«4xxxxxxx2:Xxxxxxxxxxxx—XXXXxxxxxxxxXXXXXxxXX»)

Это инициализация объекта бота как потомка от типа TeleBot, с указанием токена Вашего бота. после этого этим объектом можно манипулировать, отсылать и принимать сообщения.

2.1 Обработчики событий

Рейтинг
( Пока оценок нет )
Загрузка ...