Телеграм боты — это крутой способ взаимодействия с пользователем прямо в привычном ему мессенджере. Это гораздо быстрее и чаще удобнее, чем писать полноценное мобильное приложение. Сегодня мы с вами разберемся, как они работают, и создадим несколько собственных ботов.
Вспоминая функции
Функция — это часть кода программы, которую можно повторно использовать. У функции есть имя, список параметров и возвращаемое значение.
Возвращаемое значение — это результат работы функции. Рассмотрим простой пример:
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
Здесь функция принимает два параметра и возвращает их сумму.
Как установить pip для python на Windows, Linux, Mac OS
Внутри функций мы можем использовать любые переменные и операции с единственным ограничением:
- переменные внутри функции недоступны вне этой функции;
- переменные извне функции доступны только для чтения (если не испольуется ключевое слово global ).
Телеграм боты
Телеграм бот — это программа, которая запущена на вашем компьютере и общается с серверами телеграма через интернет. Можно представить, что при регистрации бота, телеграм выделяет нам почтовый ящик, через который мы можем получать сообщения от пользователей и отправлять их им.
Далее мы с вами научимся писать программы на питоне, которые, используя этот токен, смогут общаться с пользователями.
Устанавливаем библиотеки
Одно из ключевых преимуществ питона — наличие огромного количества встроенных и сторонних библиотек. Для того, чтобы сделать телеграм-бота, который будет присылать нам статьи из википедии по нашему запросу, нам потребуется установить сразу три библиотеки.
- pyTelegramBotApi — для создания бота.
Для установки сторонних библиотек вместе с питоном на компьютер устанавливается программа pip.exe , которая умеет автоматически находить и скачивать библиотеки по их названию. Единственный нюанс — она работает только через командную строку (терминал).
Чтобы установить библиотеки нам потребуется открыть командную строку и последовательно ввести три команды.
pip install pytelegrambotapi
PS. Если у вас установлен питон, но компьютер все равно не находит pip, путь к нему нужно добавить в системную переменную PATH.
PS. Если у вас потребуют права администратора, можно поставить библиотеки только для текущего пользователя.
Telegram Bot Python #1 — aiogram, Installation Guide, Sending Images, Simple Bots
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
Как сделать бота переводчика в телеграмме на python
Для создания бота-переводчика в телеграмме на Python нам понадобится использовать Python, приложение Telegram Bot API и Google Translate API.
Установка необходимых библиотек:
Первым делом нам нужно установить необходимые библиотеки. Для этого мы будем использовать менеджер пакетов pip.
pip install python-telegram-bot pip install googletrans
Настройка Telegram Bot API:
Теперь, когда мы установили все необходимые библиотеки, мы можем начать с настройкой Telegram Bot API. Для этого мы должны перейти на сайт BotFather и нажать кнопку «Start».
Он предложит нам следующие команды:
/start — запустить бота /newbot — создать нового бота /help — получить помощь
Для того, чтобы создать нового бота, введите /newbot и введите имя бота. Далее вам будет предложено ввести токен. Это просто строка символов, которая будет использоваться для подключения к API телеграмма. Сохраните токен для дальнейшего использования.
Настройка Google Translate API:
Для использования запросов к Google Translate API нам нужно получить ключ доступа. Для этого нам необходимо зарегистрироваться на сайте Google Cloud Platform и получить ключ доступа. Ключ доступа можно получить в панели управления проектом в разделе «API и службы».
Написание кода бота:
Теперь, когда мы получили все необходимые ключи доступа, мы можем начать писать код нашего бота-переводчика. В нашем примере мы будем использовать библиотеку python-telegram-bot.
import telegram from googletrans import Translator # Бот будет слушать команды пользователя через приложение Telegram Bot API bot = telegram.Bot(token=’YOUR_TELEGRAM_BOT_TOKEN’) # Создаем переводчик translator = Translator(service_urls=[‘translate.google.com’]) # Обработка команд пользователя def handle_message(message): chat_id = message.chat.id # Проверяем, что пользователь отправил текст if message.text: # Получаем исходный текст src_text = message.text # Переводим текст translated_text = translator.translate(src_text).text # Отправляем переведенный текст пользователю bot.sendMessage(chat_id=chat_id, text=translated_text) # Запускаем бота bot.set_update_listener(handle_message) bot.polling()
Блог
Создание чат-бота Telegram, использующего gpt 3.5 на python
- Запись опубликована: 7 мая, 2023
- Рубрика записи: Блок статей
- Комментарии к записи: 0 комментариев
Обзор
Привет всем! Сегодня я расскажу вам, как создать чат-бота для Telegram, интегрированного с API Open AI. В этом посте мы пройдем через пошаговый процесс создания полнофункционального чат-бота, который использует искусственный интеллект для реагирования на ввод данных пользователем.
Вот что мы рассмотрим:
- Настройка приложения Flask на локальной машине
- Создайте Telegram-бота
- Подключение приложения Flask к Telegram-боту
- Написание функции для выполнения запросов к API Open AI
- Развертывание приложения на Deta.space
Следуя этим шагам, вы сможете создать бота Telegram, который сможет вести интеллектуальные беседы с пользователями, используя возможности Open AI. Итак, давайте приступим!
1. Настройка приложения Flask на локальной машине
mkdir telegrambot cd telegrambot touch main.py # Open the file in the editor that u prefer
Теперь вы можете решить, хотите ли вы работать в виртуальной среде или просто установить все модули непосредственно на вашей машине.
Чтобы показать вам, как это сделать, вот команды, которые мы можем использовать для настройки виртуальной среды:
python -m venv # if you use bash source # if you use fish source /bin/activate.fish
Давайте теперь откроем файл main.py и напишем базовое приложение flask
main.py
Теперь нам нужно установить flask через pip: pip3 install flask.
После установки мы можем просто запустить приложение с помощью команды: python3 main.py