Как создать бота в телеграмм: пошаговая инструкция — Разработка на vc.ru

Как создать бота в телеграмм: пошаговая инструкция — Разработка на vc.ru

Содержание

пошаговая инструкция — Разработка на vc.ru

Вы можете самостоятельно создать бота в Telegram без программирования. Повторите действия по инструкции и бесплатно запустите своего первого чат-бота уже через 15 минут.

85 481 просмотров

Создадим бота, который будет приветствовать, задавать вопрос с вариантами ответов и реагировать на нажатие на кнопок.

Шаг 1. Создайте аккаунт разработчика

1. Зарегистрируйтесь на botmother.com с помощью электронной почты (на нее придет письмо с подтверждением) или войдите через Google.

2. Нажмите кнопку «Создать нового бота» (справа внизу).

3. Выберите «Пустой бот».

Перед вами откроется конструктор— это место, где можно разрабатывать бота и добавлять функции.

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

Логика бота создается с помощью экранов— это сообщения бота (шаги, этапы), внутри которых могут быть различные функции. Автоматически создается «Стартовый экран» — первое сообщение от бота.

На каждый экран можно добавлять компоненты— это функции и действия бота (например, отправление текста, картинок, кнопок и т.д.).

Все компоненты расположены на вкладке справа.

Шаг 2. Создайте приветствие

1. На вкладке «Компоненты» нажмите на компонент «Сообщение» и перетяните его на экран.

2. Напишите любой текст. Например, «Привет! Это мой первый бот».

3. Нажмите зеленую кнопку «Сохранить» (справа внизу).

Шаг 3. Подключите бота к мессенджеру

В Telegram чат-боты создаются с помощью специального бота @BotFather. Через него можно управлять данными бота, добавить описание, аватар и т.д.

Создадим бота и придумаем ему название:

1. Откройте в Telegram бота @BotFather.

2. Напишите ему /newbot.

3. Придумайте и напишите название бота. Оно будет отображаться в контактах и чатах. Например, «Hello, bot».

4. Придумайте и напишите юзернейм. Он используется для упоминания бота и в ссылках. Юзернейм должен быть на латинице и обязательно заканчиваться на «bot». Например, «botmother_hello_bot».

Теперь нужно подключить бота в Telegram к вашему аккаунту разработчика:

1. Снова откройте @BotFather.

2. Скопируйте токен бота.

3. Вернитесь в конструктор, найдите и откройте в меню слева раздел «Настройки».

4. Переключателем включите платформу Telegram.

5. Нажмите кнопку «Изменить».

6. Вставьте ранее скопированный токен бота.

7. Сохраните изменения.

Теперь бот подключен к конструктору, а значит, он может отвечать всем пользователям. Протестируем?

1. Найдите в поиске Telegram своего бота по юзернейму.

2. Нажмите «Начать» (или «Start»). Бот должен отправить приветственное сообщение.

Отлично! Ваш бот умеет отправлять сообщение.

Шаг 4. Добавьте дополнительные функции

Усложним бота. Пусть он задает вопрос с вариантами ответов и присылает разные сообщения в зависимости от выбора пользователя.

Например:

Текст: Как дела?

Первая кнопка: Хорошо

Вторая кнопка: Плохо

Для этого добавим еще два экрана, кнопки и изображение:

1. Откройте конструктор.

2. Добавьте два новых экрана. Для этого нажмите кнопку «Добавить экран» дважды.

3. Сохраните изменения.

Можно изменить названия добавленных экранов двойным кликом:

1. Два раза кликните на названия экранов.

2. Отредактируй тексты. Например, «Экран Хорошо» и «Экран Плохо».

Добавим кнопки, на которые пользователи смогут нажимать:

1. Переместите компонент «Кнопки» на «Стартовый экран».

2. Напишите текст. Например, «Как дела?».

3. Добавьте две кнопки.

4. Напишите тексты на кнопках. Например, «Экран Хорошо» и «Экран Плохо».

Каждая кнопка должна вести на определенный экран, который указывается в настройках кнопки:

1. Нажмите на первую кнопку.

2. В поле «Переход на экран» выберите экран «Экран Хорошо».

3. Нажмите на вторую кнопку.

4. Выберите другой экран — «Экран Плохо».

5. Сохраните изменения.

Итак, на «Стартовом экране» пользователь нажимает на кнопки и попадает на разные экраны. Нужно заполнить их контентом:

1. Переместите компонент «Изображение» на экран «Экран Хорошо».

2. Загрузите любую картинку или вставьте ссылку на изображение.

3. Сохраните изменения.

Теперь заполним следующий экран:

1. Переместите компонент «Сообщение» на экран «Экран Плохо».

2. Напишите текст. Например, «Не унывай, все будет хорошо!». Можно добавить эмодзи.

3. Сохраните изменения.

Все готово!

Шаг 5. Протестируйте бота

У нас получился такой сценарий: бот приветствует пользователя и задает вопрос с вариантами ответов; пользователь нажимает кнопку, и бот присылает определенное сообщение. Давайте протестируем!

1. Откройте своего бота.

2. Напишите команду /start.

3. Понажимайте на кнопки.

Поздравляем!

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

Можете поэкспериментировать с ботом: изменить тексты, добавить новые экраны и компоненты или изменить сценарий. Дополнительную информацию можно найти в базе знаний, а вопросы пишите через виджет обратной связи.

как создать чат-бота в Телеграме

Только в июне 2022 года в Telegram было создано 652 тысячи каналов и 64 тысячи чатов с суммарной аудиторией 4,77 млрд. человек (данные TGStat).

Сегодня выигрывает тот бизнес, где клиент получает ответ на запрос быстро, четко и по существу. Рост популярности голосовых и текстовых ботов происходит по всем каналам. Особенно в этом преуспел Telegram: у площадки user-friendly интерфейс и развитое API для запуска ботов.

Оставаясь в рамках Telegram, не перекидывая клиента на сайт, ты можешь в одном канале рассказать про товар, продать его, получить деньги, договориться о доставке и проинформировать клиента о приезде курьера

Артем Мельников, менеджер продукта

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

Эксперты Just AI

Артем Мельников

менеджер продукта

Наталья Лаптиева

руководитель технической поддержки

Содержание

Этап 1. Анализируем
Этап № 2. Выбираем решение
Этап № 3. Пишем сценарий
Этап № 4. Публикуем бота
Этап № 5. Оцениваем эффективность

Этап № 1. Анализируем

Отдельный этап разработки – понять, для кого и ради чего нужен чат-бот. Ведь у вас появится полноценный онлайн-сотрудник с высочайшей производительностью. Боты могут развлекать, обучать, консультировать в чате, по телефону или в рассылке и все это в режиме 24/7.

Чаще всего ботам поручают скучные и рутинные процессы. Например, банк напоминает клиентам о текущем платеже, а поликлиника оформляет визит врача на дом пациентам с острой болью. Определив бизнес-модель и функционал бота, вы сможете прописать его tone of voice и найти подходящую технологическую платформу.

Этап № 2. Выбираем решение

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

Если вам нужен бот с несложной логикой и узкой специализацией, подойдет и готовое решение. Когда требуется реализация сложных сценариев, стоит задуматься об использовании профессиональных инструментов разработки – диалоговых платформ и фреймворков

Наталья Лаптиева

Этап № 3.

Пишем сценарий

Хороший сервис должен быть незаметен. С ботами эта логика действует как нигде еще. Разрабатывая сценарий, вы должны «думать как клиент». Чтобы этого добиться, нужно сформировать базу знаний клиентского опыта. Именно вы понимаете контекст и истинные потребности своих заказчиков.

Сценарий – это диалог между ботом и клиентом.

Пример сценария в редакторе Aimylogic

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

Готовые интенты — это заранее подготовленный список возможных реакций клиента, например, на приветствие или прощание.

Готовые интенты в Aimylogic

Когда карта диалогов прописана, нужно определиться с дополнительным функционалом. Будет ли бот дублировать информацию в сторонний сервис или проверять наличие товара перед оплатой. Всегда оставляйте возможность перевода разговора на человека. И добавьте вашему боту персонализации. Называя клиента по имени, вы повышаете лояльность к сервису.

Не забывайте, боты не всегда могут заменить человека на 100%. В некоторых случаях боту потребуется поддержка оператора. Тут важно передать сотруднику колл-центра всю историю взаимодействия, чтобы клиенту не пришлось отвечать на одни и те же вопросы по второму кругу

Артем Мельников

После того, как сценарий создан, можно переходить в Telegram.

Этап № 4. Публикуем бота

Чтобы бот заработал, его нужно зарегистрировать и получить уникальный id, который является одновременно и токеном. Для этого в приложении Telegram через функцию поиска ищется аккаунт @BotFather. Это официальный бот для регистрации других ботов. В диалоговой форме вы получите список команд. Нужно выбрать /newbot. Вводим название и ник со словом bot.

Если название не занято, BotFather сгенерирует боту ссылку и токен. С помощью токена вы сможете сменить имя /setname, добавить описание /setdescription и аватар /setuserpic. На этом же этапе подумайте, каких кнопок с командами не хватает вашему боту. Для их создания нужно зайти в раздел «Настроить гл. меню».

Токен – уникальный ключ, который используется для доступа к Bot API.

Когда токен получен, нужно перейти в настройки каналов в том продукте, который вы используйте. Например, в Aimylogic – это раздел «Каналы». Там нужно выбрать Telegram, в поле токен вставляется код, полученный в мессенджере. Если все сделано правильно, индикатор загорится зеленым — наш бот опубликован.

Теперь можно перейти в приложение Telegram и протестировать его работу.

Раздел «Каналы» в Aimylogic

Очень полезно проводить демо-тестирование или запускать бета-версию на небольшой круг клиентов. Вы сможете оценить, какой путь проходит пользователь, и насколько бот помогает ему в решении проблем. Используя эти знания, уже можно отправляться в «большое плавание»

Наталия Лаптева

Этап № 5. Оцениваем эффективность

Мы создали бота, но наша работа на этом не закончилась. Как бы тщательно вы ни продумывали сценарий, всегда найдется такой пользователь, который поставит нашего виртуального помощника в тупик. Чтобы это исправить, нужно постоянно анализировать его работу. Для этого в Aimylogic предусмотрены удобные разделы «Статистика» и «Диалоги».

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

Раздел «Статистика» в Aimylogic

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

Артем Мельников

Чем выше качество обработки обращений у виртуального помощника, тем больше функций ему можно поручить. А чтобы процесс запуска бота прошел у вас быстро и легко, используйте наш чек-лист.

Создайте своего собственного веселого бота ChatGPT в Telegram с помощью Python: пошаговое руководство | by Eloise

Иллюстрация: Getty Images

Обновление: для новичков, которые не хотят иметь дело с кодом, я могу разместить бота для вас. DM для получения дополнительной информации

Готовы внести столь необходимый юмор в ваши групповые чаты? В этом руководстве показано, как легко добавить забавного бота OpenAI ChatGPT в любую группу Telegram с помощью всего нескольких строк кода Python 9. 0006 . Независимо от того, являетесь ли вы профессионалом в области кодирования или только начинаете, мы предоставим вам пошаговое руководство. Приготовьтесь революционизировать свои чаты и посмеяться вдоволь!

Спросите ChatGPT

Наша группа использует API OpenAI для улучшения общения и повышения производительности. Наш бот, @ask_chatGPTbot, постоянно…

t.me

F дерзкий? Пропустите пошаговое руководство и проверьте его, отправив сообщение по ссылке выше.

2. Затем получите учетные данные для аутентификации Telegram API.

Прежде всего, вам нужно создать нового бота и получить его блестящий токен API . Не волнуйтесь, это легко! Просто пообщайтесь с ботом BotFather в Telegram, и он проведет вас через весь процесс. Выполните следующие шаги, и вы будете на пути к величию бота:

Source

Откройте беседу с ботом BotFather в Telegram, выполнив поиск «@BotFather» в строке поиска Telegram. Введите «/newbot» , чтобы создать нового бота. Следуйте инструкциям, чтобы выбрать имя и имя пользователя для своего бота. Имя пользователя должно заканчиваться на «bot» (например, «my_new_bot»).

https://core.telegram.org/bots/tutorial

После создания бота BotFather предоставит вам токен. Этот токен используется для аутентификации вашего бота и предоставления ему доступа к Telegram API. Скопируйте токен и используйте его в коде своего бота для аутентификации и доступа к API. Защитите секретный токен вашего бота, как драгоценности короны! Никому не передавайте токен своего бота.

Затем вам нужно будет получить идентификатор чата канала, который вы только что создали в Telegram. Этот идентификатор является уникальным идентификатором и используется, когда кто-то хочет интегрировать Telegram со своими приложениями или службами.

https://t.me/ask_chatgptbot

Отправить сообщение на этот канал через Bot API, используя имя канала и токен доступа. https://api.telegram.org/bot11234485678:AAElJxyzHCbiiZu7Vb_fGGhmk2tbFVr54n/sendMessage?chat_id=@TestChannel&text=123

 {"ok":true, 
«результат»: {
«message_id»: 191,
«sender_chat»: {
«id»: -1001527664788,
«title»: «название тестового канала»,
«имя пользователя»: «TestChannel», «тип» :"канал"
},
"чат":{
"id":-1001527664788,
"название":"",
"имя пользователя":"TestChannel","тип":"канал"
},
" дата": 1670434355,
"текст": "123"
}
}

Идентификатор канала указан в чате/идентификаторе.

Убедитесь, что ваш бот назначен администратором.

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

3. Пришло время получить ключ API и подключиться к движку OpenAI, не спеша!

Чтобы получить ключ API от OpenAI, вам необходимо создать учетную запись на веб-сайте OpenAI (https://beta. openai.com/). Если у вас есть учетная запись, вы можете получить доступ к своим ключам API, перейдя на вкладку «Ключи API» на панели пользователя.

https://beta.openai.com/account/api-keys

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

https://beta.openai.com/account/usage

Имейте в виду, что OpenAI может ограничивать количество вызовов API, которые вы можете сделать. С личной учетной записью вам предоставляется грант в размере 18,00 долларов США для использования в запросах API. Перед использованием API обязательно ознакомьтесь с условиями обслуживания и информацией о ценах на веб-сайте OpenAI.

Подключение к Text-davinci-003 https://beta.openai.com/docs/models/gpt-3

Text-davinci-003 — это большая языковая модель, разработанная OpenAI. Он считается одной из самых эффективных языковых моделей, доступных в настоящее время, благодаря своей способности генерировать человекоподобный текст и выполнять широкий спектр языковых задач. Он был обучен на наборе данных из миллиардов слов и может генерировать связный текст, который читается так, как будто он был написан человеком .

Хорошо, воины кода! Пришло время заставить вашего бота и группу Telegram общаться как старые друзья. Выполнив несколько простых шагов и немного магии Python, вы сможете в кратчайшие сроки подключить и развернуть своего собственного бота ChatGPT в своей группе. Приступаем к кодированию!

4. Начните писать код Python

Для начала мы импортируем необходимые библиотеки и установим ключевой параметр аутентификации.

 # 1. Начните с импорта необходимых библиотек и настройки клиентов API 
import request
import json
import os
import threading

# Секретный ключ OpenAI
API_KEY = 'xxxxxxxxxxxsecretAPIxxxxxxxxxx'
# Модели: text-davinci-003,text-curie-001,text-babbage-001,text-ada-001
MODEL = 'text-davinci-003'
# Токен бота для секретного доступа Telegram
BOT_TOKEN = 'xxxxxxbotapikeyxxxxx'
# Определение личности бота с помощью прилагательных
BOT_PERSONALITY = 'Ответить забавным тоном,'
— твой билет в ChatGPT с персонажем! Используйте эту удобную константу, чтобы придать вашему боту определенный тон или манеру речи, например, , дружелюбную, профессиональную или юмористическую . Установив параметр BOT_PERSONALITY, вы можете настроить способ общения ChatGPT с вашими пользователями и создать более персонализированный и привлекательный опыт.

 Вот 15 конкретных тонов, которые вы можете использовать для настройки личности 
ChatGPT:
1. Дружелюбный
2. Профессиональный
3. Юмористический
4. Саркастичный
5. Остроумный
6. Дерзкий
7. Обаятельный
8. Нахальный
9. Причудливый
10. Непринужденный
11. Элегантный
12. Игривый
13. Страстный 940055

Затем создайте функцию, которая получает ответ от чат-бота OpenAI .

 № 2а. Функция, которая получает ответ от чат-бота OpenAI 
def openAI(prompt):
# Сделать запрос к API OpenAI
response = request.post(
'https://api.openai.com/v1/completions',
заголовки={'Авторизация': f'Bearer {API_KEY}'},
json={'модель': МОДЕЛЬ, 'подсказка': подсказка, 'температура': 0,4, 'max_tokens': 300}
)

результат = response. json()
final_result = ''.join(choice['text'] для выбора в результате['choices'])
return final_result

# 2b. Функция, которая получает изображение AI из OpenAI
def openAImage(prompt):
# Сделать запрос к API OpenAI
resp = request.post(
'https://api.openai.com/v1/images/generations',
заголовков = {'Авторизация': f'Bearer {API_KEY}'},
json={'prompt': prompt,'n' : 1, 'size': '1024x1024'}
)
response_text = json.loads(соответственно.текст)

return response_text['data'][0][ 'url']

#Example print(openAI("Что такое энтропия?"))

Эта функция 2.a отправит запрос POST в API OpenAI с заданным вводом (например, "Что такое энтропия?") API для анализа. Параметр температуры определяет, насколько случайным будет сгенерированный ответ — более низкие значения означают более предсказуемый текст. Параметр max_tokens задает ограничение на количество слов и знаков препинания в ответе. И вуаля! Функция вернет сгенерированный ответ от указанной модели OpenAI.

Теперь пришло время создать функцию, которая отправляет сообщение в определенную группу Telegram.

 № 3а. Функция, которая отправляет сообщение в определенную группу телеграмм 
def telegram_bot_sendtext(bot_message,chat_id,msg_id):
data = {
'chat_id': chat_id,
'text': bot_message,
'reply_to_message_id': msg_id
}
response = request.post(
'https://api.telegram.org/bot' + BOT_TOKEN + '/sendMessage',
json=data
)
return response.json()

№ 3б. Функция, которая отправляет изображение в определенную группу телеграмм
def telegram_bot_sendimage(image_url, group_id, msg_id):
data = {
'chat_id': group_id,
'photo': image_url,
'reply_to_message_id' = msg_id
}
url 'https://api.telegram.org/bot' + BOT_TOKEN + '/sendPhoto'

response = request.post(url, data=data)
return response.json()

Приведенный выше 3.a отправляет сообщение в определенную группу Telegram с помощью Telegram API. Функция принимает три аргумента: bot_message — сообщение для отправки, chat_id — уникальный идентификатор чата, в который будет отправлено сообщение, и msg_id — уникальный идентификатор сообщения, на которое вы хотите ответить. Функция использует библиотеку запросов для отправки GET-запроса к Telegram API с необходимыми параметрами, включая ключ API, идентификатор чата и сообщение для отправки.

Теперь пришло время перейти к хорошему — созданию функции, которая извлекает последний запрос от пользователей в группе Telegram, генерирует умный ответ , используя OpenAI , и отправляет его обратно в группу . Давайте сделаем это дело!

 # 4. Функция, которая получает последние запросы от пользователей в группе Telegram, 
# формирует ответ, используя OpenAI, и отправляет ответ обратно в группу.

def Chatbot():
# Получить последнее сообщение ID из текстового файла для обновления ChatGPT
cwd = os. getcwd()
filename = cwd + '/chatgpt.txt'
, если не os.path.exists(имя файла):
с открытым(имя файла, "w") as f:
f.write("1")
иначе:
print("Файл существует")

с открытым( filename) as f:
last_update = f.read()

# Проверить наличие новых сообщений в группе Telegram
url = f'https://api.telegram.org/bot{BOT_TOKEN}/getUpdates?offset={last_update} '
response = request.get(url)
data = json.loads(response.content)

для результата в data['result']:
try:
# Проверка наличия нового сообщения
if float(result['update_id']) > float(last_update):
# Проверка новых сообщений, которые не пришли из chatGPT
if not result['message']['from']['is_bot']:
last_update = str(int(result['update_id']))

# Получение идентификатора сообщения отправителя запроса
msg_id = str(int(result['message']['message_id']))

# Получение идентификатор чата
chat_id = str(result['message']['chat']['id'])

# Проверка, хочет ли пользователь изображение
, если '/img' в результате['message']['text ']:
prompt = result['message']['text']. replace("/img", "")
bot_response = openAImage(prompt)
print(telegram_bot_sendimage(bot_response, chat_id, msg_id))

# Проверка этого пользователя упомянул имя пользователя чат-бота в сообщении
, если '@ask_chatgptbot' в результате ['сообщение']['текст']:
prompt = результат['сообщение']['текст'].replace("@ask_chatgptbot", "")
# Вызов OpenAI API с использованием личности бота
bot_response = openAI(f"{BOT_PERSONALITY}{prompt}")
# Отправка ответа группе телеграмм
print(telegram_bot_sendtext(bot_response, chat_id, msg_id))
# Проверка того, что пользователь отвечает боту ChatGPT ['from']['is_bot']:
prompt = результат['message']['text']
bot_response = openAI(f"{BOT_PERSONALITY}{prompt}")
print(telegram_bot_sendtext(bot_response, chat_id, msg_id ))
кроме Exception as e:
print(e)

# Обновление файла с идентификатором последнего обновления
с open(filename, 'w') as f:
f.write(last_update)

return "done"

Но подождите, это еще не все! Мы также удостоверимся, что они принадлежат реальному пользователю (а не надоедливому боту), и отправим их в API OpenAI для анализа, если они упоминают имя пользователя бота и являются ответом боту. Убедитесь, что вы переименовали своего бота в скрипте, заменив «@ask_chatgptbot» на желаемое имя.

Итак, последний шаг! Пришло время добавить компонент планирования в вашего бота, чтобы он мог регулярно проверять наличие новых сообщений в группе и отправлять ответы по мере необходимости. Библиотека потоков Python может помочь вам в этом.

 # 5 Запуск проверки каждые 5 секунд для проверки наличия новых сообщений 
def main():
timertime=5
Chatbot()

# 5-секундный таймер
threading.Timer(timertime, main).start()

# Запустить основную функцию
if __name__ == "__main__":
main()

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

Полный обзор кода ( ссылка на github здесь ):

https://raw. githubusercontent.com/Eloise1988/OPENAI/main/robot.py

Вот и все, ребята! С помощью нескольких простых шагов и небольшого количества магии Python вы успешно создали чат-бота для своей группы Telegram с помощью OpenAI. Поздравляем! Время сидеть сложа руки и смотреть, как сыплются веселые ответы. Или, знаете ли, проведите тонкую настройку и настройку, чтобы сделать своего чат-бота по-настоящему уникальным. В любом случае, мир (или, по крайней мере, ваш групповой чат) теперь заполнен вашим чат-ботом.

Тестирование на https://t.me/askchatgpt

Да начнутся махинации с чат-ботами! Просто нажмите на ссылку ниже и отправьте сообщение @ask_chatGPTbot

Спросите ChatGPT

Наша группа использует API OpenAI для улучшения общения и повышения производительности. Наш бот, @ask_chatGPTbot, постоянно…

t.me

Создать Telegram Bot - Code Capsules

В этом руководстве используется Python. Вы можете найти версию NodeJS здесь.

В предыдущем уроке мы создали и разместили API на Code Capsules. В этом руководстве мы создадим клиент для этого API в виде бота Telegram. Это позволит нам получать данные о температуре, погоде и обменном курсе на ходу, отправляя сообщения нашему боту в приложении Telegram.

Мы также узнаем, как разместить этого бота в Code Capsules, чтобы его могли использовать другие. Попутно мы изучим некоторые ключевые концепции безопасного и эффективного размещения ботов.

Начнем!

Требования

Для создания Telegram-бота нам потребуется:

  • Python 3.6+ установлен.
  • Учетная запись GitHub и Git установлены.
  • Virtualenv установлен.
  • Аккаунт Telegram.
  • Аккаунт Code Capsules.
  • API в Code Capsules, созданный с помощью руководства по Personal API.

О ботах Telegram

Боты Telegram отображаются как контакты в интерфейсе Telegram. Пользователи взаимодействуют с ботами Telegram, отправляя им сообщения с командами — это слова, которым предшествует косая черта, например. /погода или /валюта . Команды, отправленные на учетную запись бота в Telegram, будут переданы в бэкэнд-код бота (в нашем случае это будет код, который мы размещаем на Code Capsules).

Например, когда мы отправим команду /weather нашему боту позже в этой статье, бот ответит данными о погоде из нашего личного API.

Давайте создадим Telegram-бота.

Регистрация учетной записи бота и общение с BotFather

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

Если у вас есть учетная запись Telegram, вы можете зарегистрировать нового бота, отправив сообщение BotFather, боту, которым управляет сама Telegram. Найдите «BotFather» и начните чат. В интерфейсе чата выполните следующие действия:

  1. Нажать "старт".
  2. Тип / newbot .
  3. Выберите имя для своего бота.
  4. Выберите имя пользователя для своего бота (должно заканчиваться на «бот»).

После того, как вы выбрали имя пользователя, BotFather ответит цифрой 9.0004 токен авторизации . Это строка, которая позволяет вашему боту отправлять запросы к Telegram Bot API, аналогично токенам авторизации, которые мы использовали для получения данных о погоде и обменном курсе в личном руководстве по API. Обязательно сохраните этот токен в безопасном и уединенном месте.

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

Планирование и настройка

Мы собираемся реализовать две команды для нашего бота.

  • Когда мы отправим команду /weather , наш бот ответит данными о погоде из созданного нами API.
  • Когда мы отправим команду /currency , наш бот ответит обменными курсами из долларов США в канадские доллары, евро и ZAR.

Создание виртуальной среды и установка требований

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

 виртуальная среда окружения
 

Войдите в виртуальную среду, используя соответствующую команду для вашей системы:

  • Linux/MacOSX : источник env/bin/активировать
  • Windows : env\Scripts\activate.bat

Виртуальная среда поможет управлять нашими зависимостями, когда мы размещаем бота на Code Capsules.

Для взаимодействия с Telegram Bot API нам необходимо установить библиотеку python-telegram-bot, оболочку Python для Telegram Bot API. Мы также будем использовать библиотеку Python 9.0207 запрашивает для получения данных из API погоды и курса валют. Чтобы установить эти требования, введите в своем терминале следующее:

 pip устанавливает запросы python-telegram-bot
 

Получение данных из API

Теперь мы можем начать программировать.

Создайте файл с именем bot.py в том же каталоге, где мы активировали виртуальную среду. В этом файле введите следующий код, заменив YOUR-URL-HERE на URL-адрес, указывающий на API погоды и обменного курса, размещенный в Code Capsules.

 запроса на импорт
url = 'ВАШ-URL-ЗДЕСЬ/ПОЛУЧИТЬ'
data = request.get(url) # запрашивает данные из API
data = data.json() # преобразует возвращаемые данные в json
# Получить значения из API
curr_temp = данные['curr_temp']
cad_rate = данные['USD_rates']['CAD']
eur_rate = данные['usd_rates']['EUR']
zar_rate = данные['usd_rates']['ZAR']
защита return_weather():
    print('Здравствуйте. Текущая температура в Кейптауне: '+str(curr_temp)+" по Цельсию.")
деф return_rates():
    print("Здравствуйте. На сегодняшний день курсы конвертации долларов США следующие: USD->CAD = "+str(cad_rate)+
    ", USD->EUR = "+str(eur_rate)+", USD->ZAR = "+str(zar_rate))
return_weather()
return_rates()
 

Здесь мы запрашиваем данные о валюте и погоде из API и анализируем температуру и курсы конвертации. Затем мы распечатываем данные, используя return_weather() и return_rates() .

Попробуйте! Запустите программу, чтобы убедиться, что все работает, затем продолжите.

Создание бота

Теперь мы можем приступить к созданию настоящего бота. В верхней части файла bot.py добавьте следующую строку:

 из telegram.ext import Updater, CommandHandler
 

Из библиотеки python-telegram-bot импортируем два класса: Updater и CommandHandler . Мы скоро поговорим об этих классах.

Нам больше не нужно печатать наши данные — вместо этого мы вернем строку нашему боту, чтобы бот мог отобразить ее в Telegram. Замените def return_weather() и def return_rates() следующим:

 по определению return_weather():
    вернуться 'Здравствуйте. Текущая температура в Кейптауне: '+str(curr_temp)+" по Цельсию."
деф return_rates():
    return "Здравствуйте.  На сегодняшний день курсы конвертации долларов США следующие: USD->CAD = "+str(cad_rate)+", USD->EUR = "+str(eur_rate)+", USD->ZAR = "+str( зар_рейт)
 

Теперь замените вызовы функций return_weather() и return_rates() кодом ниже:

 по умолчанию main():
    ТОКЕН = "ВАШ-БОТ-ТОКЕН-ЗДЕСЬ"
    updater = Updater (токен = ТОКЕН, use_context = True)
    диспетчер = updater.dispatcher
    weather_handler = CommandHandler("погода", погода)
    currency_handler = CommandHandler("валюта", валюта)
    start_handler = CommandHandler("старт", старт)
    диспетчер .add_handler (обработчик погоды)
    диспетчер.добавить_обработчик(currency_handler)
    диспетчер .add_handler (start_handler)
    updater.start_polling()
если __name__ == '__main__':
    основной()
 

В верхней части нашего нового основного метода , который будет вызываться при запуске этого файла, мы создаем экземпляр updater , экземпляр класса Updater библиотеки Telegram. Этот объект будет извлекать команды, отправленные нашему боту, и передавать их экземпляру класса Dispatcher . Мы назначили этот экземпляр диспетчера переменной диспетчера для дальнейшего использования.

Далее мы создаем три разных CommandHandler , по одному на каждую команду, которую можно отправить нашему боту: /start , /weather и /currency . В каждый экземпляр мы передаем два аргумента: текст команды (без предшествующих /) и вызываемую функцию. Например, когда пользователь вводит команду /weather , будет вызвана функция weather() .

Давайте определим эту функцию и две другие. Чуть выше def main() введите следующие три определения функций.

 определяемая погода (обновление, контекст):
    context.bot.send_message(chat_id=update.efficient_chat.id, text=return_weather())
деф валюта (обновление, контекст):
    context. bot.send_message(chat_id=update.efficient_chat.id, text=return_rates())
def start (обновление, контекст):
    context.bot.send_message(chat_id=update.efficient_chat.id, text="Привет! Я отвечаю на /weather и /currency. Попробуйте!")
 

Каждая из этих функций вызывает функцию python-telegram-bot send_message() с идентификатором текущего чата и соответствующим текстом, либо возвращенным из одной из наших других функций, либо заданным в виде строки. Аргументы update и context предоставляются диспетчером автоматически.

Вернувшись в нашу функцию main() , мы используем dispatch.add_handler , чтобы добавить все три обработчика в наш диспетчер.

Наконец, updater.start_polling() начнет опрос для получения обновлений от Telegram. Это означает, что наш код будет регулярно спрашивать серверы Telegram, были ли ему отправлены какие-либо команды. При получении команды будет вызван соответствующий обработчик. В следующем разделе мы обсудим подводные камни опроса и рассмотрим альтернативу.

Файл кода bot.py теперь должен выглядеть так, как показано ниже. Еще раз обязательно замените YOUR-URL-HERE URL-адресом API, который вы создали в руководстве по API.

 из telegram.ext import Updater, CommandHandler
запросы на импорт
url = 'ВАШ-URL-ЗДЕСЬ/ПОЛУЧИТЬ'
data = request.get(url) # запрашивает данные из API
data = data.json() # преобразует возвращаемые данные в json
# Получить значения из API
curr_temp = данные['curr_temp']
cad_rate = данные['USD_rates']['CAD']
eur_rate = данные['usd_rates']['EUR']
zar_rate = данные['usd_rates']['ZAR']
защита return_weather():
    возвращение'Здравствуйте. Текущая температура в Кейптауне: '+str(curr_temp)+" по Цельсию."
деф return_rates():
    return "Здравствуйте. На сегодняшний день курсы конвертации долларов США следующие: USD->CAD = "+str(cad_rate)+ ", USD->EUR = "+str(eur_rate)+", USD->ZAR = "+str( зар_рейт)
Def погода (обновление, контекст):
    context. bot.send_message(chat_id=update.efficient_chat.id, text=return_weather())
деф валюта (обновление, контекст):
    context.bot.send_message(chat_id=update.efficient_chat.id, text=return_rates())
def start (обновление, контекст):
    context.bot.send_message(chat_id=update.efficient_chat.id, text='Привет! Я отвечаю на /weather и /currency. Попробуйте это!')
деф основной():
    ТОКЕН = "ВАШ-БОТ-ТОКЕН-ЗДЕСЬ"
    updater = Updater (токен = ТОКЕН, use_context = True)
    диспетчер = updater.dispatcher
    Weather_handler = CommandHandler('погода', погода)
    currency_handler = CommandHandler('валюта',валюта)
    start_handler = CommandHandler('старт',старт)
    диспетчер .add_handler (обработчик погоды)
    диспетчер.добавить_обработчик(currency_handler)
    диспетчер .add_handler (start_handler)
    updater.start_polling()
если __name__ == '__main__':
    основной()
 

Ниже приведен разговор с ботом, созданным с помощью этой программы. Запустите bot.py и попробуйте сами.

Мы не сможем отправлять сообщения нашему боту, если эта программа не запущена, поэтому ее размещение на Code Capsules позволит нам взаимодействовать с ботом без необходимости постоянно поддерживать этот код на нашем ПК для разработки.

Хотя мы могли бы развернуть нашего бота в Code Capsules в его текущем состоянии, у нашей текущей реализации есть недостаток, который мы должны исправить в первую очередь.

Опрос против веб-перехватчиков

Наш файл bot.py может получать команды, отправленные ему в Telegram, двумя способами. В настоящее время код постоянно опрашивает Telegram, независимо от того, используется ли бот. Если бы мы разместили эту текущую версию на Code Capsules, мы бы потратили впустую пропускную способность, поскольку подавляющее большинство опросов ничего не дали бы.

Вместо того, чтобы опрашивать Telegram на наличие изменений, мы можем создать вебхук . Это позволит нам получать команды по мере их отправки пользователями Telegram, без необходимости постоянно запрашивать их у серверов Telegram.

Мы настроим веб-перехватчик, сказав Telegram отправлять команды, отправленные на нашу учетную запись бота, на URL-адрес кодовых капсул нашего бота. Затем наш диспетчер обработает команду с помощью соответствующего обработчика и отправит обратно запрошенную информацию.

Создание веб-перехватчика

Чтобы настроить веб-перехватчик, замените строку updater.start_polling() в основной функции кодом ниже:

 ПОРТ = int(os.environ.get('ПОРТ', '443'))
    HOOK_URL = 'ВАШ-КОДЕКАПСУЛЫ-URL-ЗДЕСЬ' + '/' + ТОКЕН
    updater.start_webhook(listen='0.0.0.0', port=PORT, url_path=TOKEN, webhook_url=HOOK_URL)
    updater.idle()
 

Здесь мы запускаем веб-перехватчик, который будет прослушивать наш URL-адрес Code Capsules через TCP-порт 443 и путь к нашему токену. Таким образом, Telegram будет ретранслировать команды, отправленные нашему боту, на следующий URL:

.
 https://ВАШ-CODECAPSULES-SUBDOMAIN.codecapsules.io:443/TOKEN
 

Если вы выполнили некоторые из наших других руководств по бэкенду, вы будете знакомы с настройкой веб-серверов, которые получают запросы GET и POST по разным маршрутам. Вы можете думать о веб-хуке как об очень простом HTTP-сервере, предназначенном для использования ботами и автоматизированными службами, а не людьми.

Подготовка к развертыванию

Прежде чем отправить наш код на GitHub и развернуть его на Code Capsules, нам нужно внести одно небольшое изменение в код и создать несколько файлов.

Создание переменной среды ключа API

Поскольку мы отправим наш код на GitHub, нам нужно скрыть ключ аутентификации нашего бота. Если мы этого не сделаем, любой может использовать наш ключ аутентификации и получить контроль над нашим ботом.

Заменить эту строку

 TOKEN = "ВАШ-БОТ-ТОКЕН-ЗДЕСЬ"
 

с ниже

 импорт ОС
ТОКЕН = os.getenv('BOTAPIKEY')
 

os.getenv('BOTAPIKEY') будет искать переменную среды с именем "BOTAPIKEY". Когда мы размещаем нашего бота в Code Capsules, мы устанавливаем для этой переменной среды ключ, который мы получили от BotFather.

Теперь мы должны создать несколько файлов, прежде чем мы сможем отправить наш код на GitHub и развернуть его на Code Capsules.

Создание Procfile и требования.txt

Code Capsules требует пару файлов для развертывания нашего приложения: Procfile и requirements.txt . Первый сообщает Code Capsules, как запускать наше приложение, а второй сообщает ему, какие библиотеки ему нужно установить.

Для создания Procfile :

  1. Перейдите в каталог, содержащий файл bot.py , и войдите в виртуальную среду.
  2. Создайте файл с именем Procfile (без расширения файла).
  3. Откройте Procfile , введите web: python3 bot.py и сохраните файл.

В том же каталоге откройте терминал и активируйте виртуальную среду. Затем введите pip3 freeze > requirements.txt , чтобы создать список требований для нашего сервера Code Capsules.

Теперь мы можем отправить наш код на GitHub. Создайте репозиторий GitHub и отправьте в репозиторий файлы requirements. txt , Procfile и bot.py .

Развертывание бота для кодирования капсул

Со всеми файлами, отправленными на GitHub, давайте развернем бота в Code Capsules:

  1. Войдите в Code Capsules и при необходимости создайте команду и пространство.
  2. Связать кодовые капсулы с ранее созданным репозиторием GitHub.
  3. Введите место для кодовых капсул.
  4. Создайте новую капсулу, выбрав тип капсулы "Backend".
  5. Выберите репозиторий GitHub, содержащий бота, — оставьте «Подпуть репо» пустым и нажмите «Далее».
  6. Оставьте поле «Выполнить команду» пустым и нажмите «Создать капсулу».

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

  1. Перейдите к своей капсуле.
  2. Перейдите на вкладку «Конфигурация».
  3. Добавьте переменную среды с именем "BOTAPIKEY" и присвойте ей ключ API вашего бота в качестве значения. Обязательно нажмите кнопку «Обновить капсулу» после добавления переменной.

Теперь давайте добавим нашему веб-перехватчику правильный домен.

  1. Перейдите на вкладку «Обзор».
  2. Скопируйте домен, найденный в разделе «Домены».
  3. Откройте файл bot.py и найдите строку HOOK_URL = 'YOUR-CODECAPSULES-URL-HERE' + '/' + TOKEN .
  4. Замените "YOUR-CODECAPSULES_URL" только что скопированным доменом.
  5. Зафиксируйте и отправьте эти изменения на GitHub.

После внесения этих изменений Capsule перестроится. Как только это будет сделано, бот готов. Попробуйте!

Дополнительное чтение

Мы рассмотрели многое выше, от создания бота Telegram до различий между веб-перехватчиками и опросами.

Если вам интересно узнать больше о том, что вы можете делать с ботами Telegram, ознакомьтесь с вводной информацией для разработчиков ботов Telegram. Если у вас есть какие-то идеи, но вам требуется более глубокое понимание библиотеки python-telegram-bot , просмотрите их репозиторий GitHub.

Об авторе

alexxlab administrator

Оставить ответ