Содержание

Просим бота написать бота / Хабр

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

Началось все с того, что я захотел зарегистрировать себе аккаунт на OpenAI и понять, кто такой этот ваш ChatGPT. Немного танцев с бубном, и желаемая цель была достигнута. Бот понравился, но возникали некоторые неудобства из-за доступа по VPN. Тогда у меня появилась идея создать телеграм-бота, который будет отправлять запросы в API OpenAI и возвращать ответы.

Я потратил следующий час на чтение документации по API OpenAI, но моя лень оказалась более находчивой, и я решил дать ChatGPT задание написать бота самостоятельно.

Что из этого вышло:

Текст ТЗ для ChatGPT

Приветствую, мой дорогой! У меня для тебя задание: написать
телеграм-бота на Python, который будет отправлять запросы в API OpenAI и
возвращать ответы. Для работы с API телеграм давай использовать

библиотеку telebot

  1. Телеграм-бот должен иметь два обработчика команд — /start и /help. Текст ответа на команды может быть любым.

  2. Бот должен немедленно отправлять ответ о том, что запрос принят в работу, при получении запроса от клиента.

  3. Когда бот получает запрос от пользователя, необходимо вызвать метод create у класса Completion с использованием библиотеки OpenAI. В качестве параметров задаем модель text-davinci-003 и max_tokens = 3500.

  4. Затем мы получаем ответ от API OpenAI и возвращаем его пользователю.

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

Вот сгенерированный им код:

import telebot
import openai
import os
# устанавливаем ключ API OpenAI из переменной окружения
openai.api_key = os.environ.get("OPENAI_API_KEY")
# создаем экземпляр телеграм бота
bot = telebot.TeleBot('YOUR_TOKEN')
# создаем обработчик команд
@bot.message_handler(commands=['start'])
def start(message):
    bot.reply_to(message, "Привет! Я бот, который может помочь вам с OpenAI API. ")
@bot.message_handler(commands=['help'])
def help(message):
    bot.reply_to(message,
                 "Вы можете отправлять запросы в OpenAI API через меня. Просто напишите мне свой запрос и я отправлю его на обработку.")
# создаем обработчик сообщений
@bot.message_handler(func=lambda message: True)
def echo(message):
    bot.reply_to(message, "Запрос принят в работу.")
    try:
        response = openai.Completion.create(
            engine="text-davinci-003",
            prompt=message.text,
            max_tokens=3500
        )
        bot.reply_to(message, response.choices[0].text)
    except:
        bot.reply_to(message, "Произошла ошибка при обработке вашего запроса.")
# запускаем телеграм бота
bot.polling()

Немного поправляем этот участок кода bot = telebot.TeleBot('YOUR_TOKEN'), чтобы значение тянулось из переменных окружения.

Первое сообщение боту

Вуаля! Буквально одна правка и все работает. Но мы хотим продолжить беседу про дождь и уточнить еще некоторых моментов, и получаем что-то странное.

Продолжаем беседу про дождь, но не упомянем о нем явно

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

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

С учетом этой информации, мы готовы внести некоторые изменения в исходное ТЗ.

Текст ТЗ №2 для бота

Задача требует внести изменения в код бота, чтобы он мог сохранять
контекст предыдущих сообщений пользователей и использовать его при
отправке запросов в API OpenAI.

  1. Для хранения контекста необходимо использовать как массив, так и баз данных SQLite. Бот должен сначала пытаться получить информацию о контексте из массива. При этом массив должен быть очищен через 10 минут.

    Если контекст не найден в массиве или время его хранения истекло, бот должен обратиться к базе данных.

  2. Важно предусмотреть возможность оповещения пользователя в случае возникновения ошибок.

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

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

Получаем от бота вот такой результат:

import telebot
import openai
import os
import sqlite3
from datetime import datetime, timedelta
# устанавливаем ключ API OpenAI из переменной окружения
openai.api_key = os.environ.get("OPENAI_API_KEY")
# создаем экземпляр телеграм бота
bot = telebot.TeleBot(os.environ.get("TG_API_KEY"))
# создаем подключение к базе данных
conn = sqlite3.connect("example.db", check_same_thread=False)
# создаем таблицу в базе данных для хранения контекста
with conn:
    cur = conn.
cursor() cur.execute("CREATE TABLE IF NOT EXISTS context (user_id TEXT, message TEXT, timestamp TEXT)") # задаем интервал, через который массив с контекстом будет очищаться CONTEXT_CACHE_INTERVAL = timedelta(minutes=10) # словарь, в котором будут храниться последние запросы пользователя context_cache = {} # создаем обработчик команд @bot.message_handler(commands=['start']) def start(message): bot.reply_to(message, "Привет! Я бот, который может помочь вам с OpenAI API.") @bot.message_handler(commands=['help']) def help(message): bot.reply_to(message, "Вы можете отправлять запросы в OpenAI API через меня. Просто напишите мне свой запрос и я отправлю его на обработку.") # создаем обработчик сообщений @bot.message_handler(func=lambda message: True) def echo(message): # смотрим, есть ли контекст в кэше if message.chat.id in context_cache and datetime.now() - context_cache[message.chat.id]['timestamp'] <= CONTEXT_CACHE_INTERVAL: context = context_cache[message.
chat.id]['message'] else: # если контекста в кэше нет, ищем его в базе данных with conn: cur = conn.cursor() cur.execute("SELECT message FROM context WHERE user_id = ? ORDER BY timestamp DESC LIMIT 1", (str(message.chat.id),)) row = cur.fetchone() context = row[0] if row else "" bot.reply_to(message, "Запрос принят в работу.") try: response = openai.Completion.create( engine="text-davinci-003", prompt=context + message.text, max_tokens=3500 ) bot.reply_to(message, response.choices[0].text) # сохраняем контекст в кэше и базе данных with conn: cur = conn.cursor() cur.execute("INSERT INTO context (user_id, message, timestamp) VALUES (?, ?, ?)", (str(message.chat.id), context + message.text, datetime.now().strftime("%Y-%m-%d %H:%M:%S"))) conn.commit() context_cache[message.chat.id] = {'message': context + message.
text, 'timestamp': datetime.now()} except Exception as e: bot.reply_to(message, f"Произошла ошибка при обработке вашего запроса: {str(e)}") # запускаем телеграм бота bot.polling()

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

Вопрос про дождь с контекстом

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

Побочный эффект от костылей

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

Возможно, стоит добавить отдельную команду на клиентскую сторону, которая будет очищать контекст.

response = openai.Completion.create(
            engine="text-davinci-003",
            prompt=context + message.text,
            max_tokens=3500
        )

Мы продолжаем вести непринужденную беседу с ботом, как вдруг получаем ошибку: Произошла ошибка при обработке вашего запроса: This model's maximum context length is 4097 tokens, however you requested 4654 tokens (1154 in your prompt; 3500 for the completion). Please reduce your prompt; or completion length.

Это происходит из-за ограничения на количество символов в запросе, которое установлено в API OpenAI. А мы еще тут контекст копим в кэше. Поэтому все также можно попросить бота исправить ошибку, и он дает нам такой код:

@bot.message_handler(commands=['drop_cache'])
@restricted_access
def drop_cache(message):
    user_id = message.from_user.id
    conn = get_conn()
    cursor = conn.cursor()
    cursor. execute('DELETE FROM context WHERE user_id=?', (user_id,))
    hot_cache.clear()
    conn.commit()
    bot.send_message(user_id, "Cache dropped.")

Здесь мы очищаем кеш для конкретного user_id, чтобы уложиться в ограничения api.

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

Как создать телеграм-бота на Python: инструкция

Наверняка вам уже приходилось сталкиваться с ботами в Telegram. Боты помогают автоматизировать рутинные задачи как для обычных пользователей (например, боты-планировщики или боты для учета финансов), так и для компаний. Последние могут использовать ботов-рекламщиков, которые занимаются рассылками по клиентской базе, ботов-ассистентов, которые выполняют роль технической поддержки, и так далее.

В этой инструкции опишем процесс создания бота в Telegram на Python. В качестве примера создадим Telegram-бот компании Timeweb Cloud, который будет приветствовать пользователя и предлагать ему перейти на сайт компании.

Как создать бота в Telegram на Python пошагово 

Шаг 1. Регистрация бота в BotFather

В первую очередь зарегистрируйте бота в Telegram. Для этого введите в поисковой строке мессенджера @BotFather и перейдите к нему, как это показано на картинке ниже.

После нажмите кнопку «Запустить» в нижней части окна и выберите в открывшемся списке команду /newbot. Бот предложит указать имя создаваемого бота. В нашем случае укажем TimewebCloudBot, и его же продублируем в качестве короткого имени.

После этого бот будет создан. 

Надежно сохраните токен бота — в будущем он понадобится для авторизации и работы с ботом.

Шаг 2. Подготовка необходимых компонентов

Переходим к подготовке необходимых компонентов. На вашем компьютере должен быть установлен Python и среда разработки (в нашем случае это PyCharm). 

В качестве библиотеки мы будем использовать pyTelegramBotAPI. Установить ее можно, с помощью следующей команды:

pip install pyTelegramBotAPI

Все необходимые компоненты установлены. Переходим к следующему шагу.

Шаг 3. Написание кода

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

import telebot

botTimeWeb = telebot.TeleBot('Уникальный токен')

from telebot import types

Вместо ‘Уникальный токен’ укажите токен, который вы получили при регистрации бота.

Теперь реализуем так называемые обработчики сообщений. Они отвечают за фильтрацию входящих сообщений бота и вызов указанной функции для этих сообщений. 

С помощью кода ниже реализуйте команду /start, которая будет отвечать за запуск бота:

@botTimeWeb.message_handler(commands=['start'])
def startBot(message):
  first_mess = f"<b>{message.from_user.first_name} {message.from_user.last_name}</b>, привет!\nХочешь расскажу немного о нашей компании?"
  markup = types. InlineKeyboardMarkup()
  button_yes = types.InlineKeyboardButton(text = 'Да', callback_data='yes')
  markup.add(button_yes)
  botTimeWeb.send_message(message.chat.id, first_mess, parse_mode='html', reply_markup=markup)

Разберем написанный выше код по порядку. 

Первые две строчки объявляют метод обработки входящих сообщений. В нашем случае в качестве параметра передается команда /start

Далее объявляется переменная first_mess, хранящая указанную строку. Она будет отображаться пользователю после вызова команды /start. Здесь также используется объект Message, необходимый для определения имени (first_name) и фамилии (last_name) пользователя. 

Далее следуют 3 строчки кода, отвечающие за добавление кнопки, которая в будущем будет перенаправлять пользователя на следующее сообщение. Тип данной кнопки — Inline. Это значит, что такая кнопка будет отображаться прямо под сообщением. Для ее создания необходимо использовать метод InlineKeyboardButton. Параметр text отвечает за имя кнопки, а callback_data — за возвращаемую строку при нажатии. Второй параметр понадобится для реализации функционала кнопки.

И наконец, добавляется метод send_message, необходимый для отправки сообщения пользователю. У него указаны 4 параметра:

  • message.chat.id отвечает за синхронизацию сообщения с чатом бота;
  • first_mess передает ранее указанное сообщение;
  • parse_mode необходим для указания режима разметки сообщений;
  • reply_markup отвечает за добавление созданной кнопки.

Сейчас кнопка создана, но при ее нажатии ничего не происходит. Необходимо реализовать её функционал. Для этого используем следующий фрагмент кода:

@botTimeWeb.callback_query_handler(func=lambda call:True)
def response(function_call):
  if function_call.message:
     if function_call. data == "yes":
        second_mess = "Мы облачная платформа для разработчиков и бизнеса. Более детально можешь ознакомиться с нами на нашем сайте!"
        markup = types.InlineKeyboardMarkup()
        markup.add(types.InlineKeyboardButton("Перейти на сайт", url="https://timeweb.cloud/"))
        botTimeWeb.send_message(function_call.message.chat.id, second_mess, reply_markup=markup)
        botTimeWeb.answer_callback_query(function_call.id)

В начале объявляется метод для обработки запросов обратного вызова. Выполняется проверка на соответствие строки, указанной после == и возвращенной после нажатия кнопки. Так как ранее мы указали значение параметра callback_data = 'yes', то проверка пройдет успешно. 

После проверки реализован функционал кнопки. Переменная second_mess хранит текст ответного сообщения. А далее описана реализация кнопки, которая хранит ссылку на сайт компании Timeweb Cloud.

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

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

botTimeWeb.infinity_polling()

Бот создан. Сохраните файл с кодом и переходите к его запуску. 

Шаг 4. Запуск бота

Откройте терминал и выполните запуск проекта:

python main.py

Теперь бот запущен, можно переходить в Telegram и тестировать его.

Для дополнительной безопасности и стабильности рекомендуется запускать бота на виртуальном сервере. Арендовать надежный облачный сервер можно на Timeweb Cloud. 

Шаг 5. Тестирование бота

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

Для начала работы нажмем «Запустить» внизу экрана.

Бот обработает команду и выведет приветственное сообщение. 

Для продолжения работы с ботом нажмем кнопку под сообщением.

Бот среагирует на нажатие кнопки и выведет следующее сообщение. Под ним также отображается кнопка, которая содержит ссылку на сайт компании. Проверим ее работоспособность.

В ответ на нажатие кнопки бот предложит перейти по ссылке. Нажимаем «Перейти» и переходим на сайт компании.

Заключение

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

Telegram Bot — Пример использования — Как создать бота в Telegram, который отвечает на групповые сообщения


Назад к руководствам пользователя

Примечание : Для этого руководства требуются:

  • Telegram Bot — в этом документе используется версия 1.0.3

Введение

Telegram Bot — это плагин WordPress, который позволяет отправлять автоматические сообщения, электронные письма и SMS на основе разговоров в Telegram и многое другое. Вы можете использовать Telegram Bot Плагин WordPress для автоматизации бизнес-процессов, связанных с приложением для обмена сообщениями.

Основные функции:

  • Повторитель электронной почты   – отправка сообщений, отправленных в группе Telegram, на один или несколько адресов электронной почты. Отметьте слова как «стоп-слова», чтобы они не запускали бота.
  • Личные сообщения  – Упоминание пользователя после отправки определенных слов или выражений в группу вместе с сообщением этому пользователю.
  • Групповые сообщения  – отправить сообщение всем пользователям на основе определенных условий в определенной группе.
  • Повторитель SMS   – отправка копии групповых разговоров Telegram на мобильное устройство.
  • Оповещения по SMS   – отправка уведомлений на несколько телефонных устройств при использовании определенных ключевых слов.
  • Повторитель WordPress  – Храните все сообщения из определенной группы или нескольких групп в WordPress и выводите содержимое с помощью шорткода.

Use Case Front-End

Пример:  в выбранной группе Telegram бот должен отвечать на групповые сообщения, когда кто-то набирает слова «привет», «привет» или «привет». Сообщение должно содержать слова «бот» или «помощь» и не должно содержать слова «робот».

Результат:

Предположения вариантов использования

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

Требования
  • Плагин Telegram Bot будет работать только на сайтах с установленными сертификатами SLL (HTTPS).
  • Нельзя использовать один и тот же токен доступа (API бота) на разных сайтах.
  • Бот может неправильно работать с супергруппами.

Отсюда следует:

  • Установка плагина
  • Создание учетной записи Telegram
  • Создание бота и подключение его к плагину
  • Создание группы и добавление бота в качестве администратора
  • Создание правил — групповые сообщения
  • Создание, дублирование и удаление правила
  • Просмотр журнала — проверка выполненных правил
  • Конечный результат

Установка плагина

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

  • Загрузите плагин с панели управления клиента
  • Войдите в WordPress и перейдите к0007 Администратор WordPress → Плагины настройки
  • Нажмите  Добавить новый
  • Активировать и добавить лицензию

Подробнее:  Начало работы — Обзор подключаемого модуля


Создание учетной записи Telegram

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

Когда учетная запись создана, необходимо создать бота.

Создание бота и подключение его к плагину

Ресурсы Telegram

Официальная документация Telegram: Как создать бота | Команды @BotFather

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

Если вы считаете, что эта статья устарела, свяжитесь с нами по телефону .

Чтобы создать бота Telegram, выполните следующие действия:

1) Свяжитесь с пользователем @BotFather  в Telegram и начните чат.

Либо перейдите по ссылке @BotFather, либо найдите его имя пользователя.

2) Напишите /newbot на @BotFather и выберите понятное имя бота. Дружественные имена могут содержать пробелы. Пример: Creative Minds Bot .

3) Укажите имя пользователя бота. Это имя не может содержать пробелов и должно заканчиваться на «бот». Пример: CmindsBot .

Ваш бот создан! Теперь вы получите токен доступа.

Вы можете найти его в журналах сообщений @BotFather. Либо отправьте ему сообщение /token @xxx  , где xxx – это имя бота. Например:  /токен @CmindsBot .

4) Скопируйте этот токен и перейдите к плагину: Панель администратора → CM Telegram Bot → Настройки → Настройки API вкладка.

Там в разделе Настройки Telegram API  вам необходимо заполнить следующие поля:

  1. Bot API Key — вставьте сюда скопированный токен.
  2. Имя пользователя бота  — Здесь нужно написать имя пользователя бота без @. В нашем примере это CmindsBot .

    Помните: имя пользователя без пробелов и заканчивается на bot :

  3. Имя отправителя по умолчанию  – если бот не может определить имя отправителя, он будет использовать это имя.

Затем нажмите кнопку Сохранить .

СОВЕТ: отредактируйте бота

С помощью @BotFather вы можете отредактировать своего бота: имя, описание, сведения о нем, фото профиля и список команд. Просто следуйте инструкциям @BotFather .

Создание группы и добавление бота в качестве администратора

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

Плагин Telegram Bot  требует, чтобы бот был частью одной или нескольких групп для получения сообщений и взаимодействия с пользователями.

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

Откройте меню Telegram и нажмите Новая группа .

Во всплывающем окне нужно написать название вашей группы и нажать Далее .

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

И последний шаг: настройка бота администратором. Перейдите к настройкам группы, нажмите «Управление группой» → «Администраторы» → «Добавить администратора ». Затем выберите бота и нажмите Сохранить и Закрыть .

Создание правил — групповые сообщения

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

Примеры:

  • Отправка всех сообщений из группы на выбранный адрес электронной почты, кроме тех, которые содержат слово «привет» или «привет»
  • Если кто-то напишет «помощь» в группе, отправьте смс с контактной информацией на выбранный номер

В данном случае будем рассматривать ответы бота в Telegram на групповые сообщения, когда кто-то отправил сообщение, содержащее слова или фразы из правила. Итак, перейдите к Панель администратора → CM Telegram Bot → Настройки   Групповые сообщения вкладка.

Там вы можете найти следующие поля и опции:

  • Ограничить группу ID — Здесь вам нужно написать ID вашей группы Telegram. Это поле может содержать несколько идентификаторов для разных групп. Должен соответствовать формату «-xxxxxxxx» (символ «-», за которым следуют девять цифр). Примечание: если оставить это поле пустым, правило будет применяться ко ВСЕМ группам, где бот установлен как администратор.

    Чтобы получить идентификатор, перейдите в Telegram и введите /getGroupId в своей группе.

    Примечание: Команды бота Telegram чувствительны к регистру! Таким образом, /getGroupId будет работать, а /getgroupid — нет.

    В ответ вы получите идентификатор группы:

  • Групповое сообщение Telegram — Сообщение для отправки группе.
  • Обнаружение фразы/фраз . Правило будет выполняться только в том случае, если оно включает ПО КРАЙНЕЙ МЕРЕ ОДНО из этих слов или фраз.
  • Статус  — Установите правило как активное или приостановленное.
  • Не должно включать . Правило будет выполняться только в том случае, если оно НЕ включает НИ ОДНОГО из этих слов.
  • Должен включать . Правило будет работать, только если оно ДЕЙСТВИТЕЛЬНО включает хотя бы одно из этих слов.
  • Отложить на  — укажите в поле число часов. После того, как правило будет активировано, оно будет «откладываться» на X часов, прежде чем будет готово к повторной активации. Полезно, чтобы избежать спама.
  • Выполнять каждые  — Выполнять правило после каждых X срабатываний триггера. Например, если для обнаружения установлено значение 3, правило будет установлено для следующих 1,4,7.
    • Сброс счетчика — нажмите кнопку, чтобы установить счетчик Выполнять каждые на 0. Пример: правило выполняется каждые 10 сообщений и 9 отправлено, поэтому оно будет выполняться снова в следующем сообщении. Щелкните Reset Count , и правило начнет отсчет с самого начала.
  • Шорткоды Fire — здесь можно разместить один или несколько шорткодов, которые должны выполняться на сайте, на котором запущен бот, после отправки сообщения. Вывод этого шорткода будет напечатан в группе телеграмм, связанной с этим сообщением. Обратите внимание, что не все шорткоды могут быть выполнены для печати вывода в группе Telegram. Узнайте больше о том, как это работает, в этом руководстве. Примечание : эта опция появилась в версии 1.0.5.

Давайте заполним эту форму для нашего примера следующим образом: правило должно реагировать на группу, когда кто-то набирает слова «привет», «привет» или «привет». Сообщение должно содержать слова «бот» или «помощь» и не должно содержать слово «робот».

Затем нажмите кнопку Сохранить :

Сводка условий для ключевых слов

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

Например, если у вас есть:

  • Распознавание фраз – «Привет», «Привет», «Привет»
  • Обязательно – «бот», «помощь»
  • Не должен включать – «робот»

С каждым сообщением будет происходить следующее:

  • » привет, бот, помоги мне » — будет запускать правило
  • » эй, бот, можешь мне ответить? » — активирует правило
  • » привет, кто-нибудь может мне помочь? » — активирует правило
  • » привет, робот, мне нужна твоя помощь » — Правило не сработает, потому что у него есть «робот»
  • « помогите мне, бот » — правило не будет запускаться, потому что в нем нет «Привет», «Привет» или «Привет»

Посмотрим результат на интерфейсе:

Создание, дублирование и удаление правила

Каждая вкладка содержит пустое правило.

  1. Добавить правило. . Создавайте дополнительные правила в любое время, нажав эту кнопку.
  2. Дублировать правило  — вы можете дублировать правила и редактировать копии.
  3. Удалить правило — Удалить правило. Примечание: будьте осторожны, так как для этого действия нет подтверждения.

Все изменения (включая удаление) выполняются только после нажатия кнопки Сохранить .

Просмотр журнала — проверка выполненных правил

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

Захват идентификатора группы

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

Чтобы просмотреть журнал, перейдите к панели администратора  → CM Telegram Bot → Журнал .

В журнале отображается информация о каждом действии:

  • Идентификатор группы  – Этот столбец может быть полезен для получения этого номера (вы также можете упорядочить этот столбец по идентификатору).
  • Имя пользователя — Вы можете упорядочить этот столбец по именам пользователей.
  • Сообщение  — регистрируются все групповые сообщения, даже если они не запускают какое-либо правило.
  • Действия  – определяет правила и, если они были обработаны успешно или по какой-то причине не удалось.
  • Статус — Статус сообщения.
  • Дата  – Дата отправки сообщения.

Вы можете очистить журнал в любой момент, нажав кнопку Очистить журнал .

Конечный результат

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

Пример использования Передняя часть


Дополнительную информацию о плагине Telegram Bot WordPress

Другие продукты WordPress можно найти по адресу CreativeMinds WordPress Store


Сообщите нам, как мы можем Улучшить страницу документации по продукту

Чтобы открыть запрос в службу поддержки , посетите наш центр поддержки

Telegram Bot — Пример использования — Как создать бота в Telegram и научить его реагировать на определенные термины


Вернуться к руководствам пользователя

Примечание : Для этого руководства требуются:

  • Telegram Bot — в этом документе используется версия 1. 0.3

Введение

Telegram Bot — это плагин WordPress, который позволяет отправлять автоматические сообщения, электронные письма и SMS на основе разговоров в Telegram и многое другое. Вы можете использовать Telegram Bot Плагин WordPress для автоматизации бизнес-процессов с участием приложения для обмена сообщениями.

Основные функции:

  • Повторитель электронной почты   – отправка сообщений, отправленных в группе Telegram, на один или несколько адресов электронной почты. Отметьте слова как «стоп-слова», чтобы они не запускали бота.
  • Личные сообщения  – Упоминание пользователя после отправки определенных слов или выражений в группу вместе с сообщением этому пользователю.
  • Групповые сообщения  – отправить сообщение всем пользователям на основе определенных условий в определенной группе.
  • Повторитель SMS  — отправка копии групповых разговоров Telegram на мобильное устройство.
  • Оповещения по SMS   – отправка уведомлений на несколько телефонных устройств при использовании определенных ключевых слов.
  • WordPress Repeater  – Храните все сообщения из определенной группы или нескольких групп в WordPress и выводите содержимое с помощью шорткода.

Use Case Front-End

Пример:  в выбранной группе Telegram бот должен отвечать пользователю, когда он набирает слова «привет», «привет» или «привет». Сообщение должно содержать слова «помощь» или «срочно» и не должно содержать слов «администратор» или «администратор».

Результат:

Предположения вариантов использования

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

Требования
  • Плагин Telegram Bot будет работать только на сайтах с установленными сертификатами SLL (HTTPS).
  • Нельзя использовать один и тот же токен доступа (API бота) на разных сайтах.
  • Бот может неправильно работать с супергруппами.

Отсюда следует:

  • Установка плагина
  • Создание учетной записи Telegram
  • Создание бота и подключение его к плагину
  • Создание группы и добавление бота в качестве администратора
  • Создание правил — Личные сообщения
  • Создание, дублирование и удаление правила
  • Просмотр журнала — проверка выполненных правил
  • Конечный результат

Установка плагина

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

  • Загрузите плагин с панели управления клиента
  • Войдите в WordPress и перейдите к0007 Администратор WordPress → Плагины настройки
  • Нажмите  Добавить новый
  • Активировать и добавить лицензию

Подробнее:  Начало работы — Обзор подключаемого модуля


Создание учетной записи Telegram

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

Когда учетная запись создана, необходимо создать бота.

Создание бота и подключение его к плагину

Ресурсы Telegram

Официальная документация Telegram: Как создать бота | Команды @BotFather

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

Если вы считаете, что эта статья устарела, свяжитесь с нами по телефону .

Чтобы создать бота Telegram, выполните следующие действия:

1) Свяжитесь с пользователем @BotFather  в Telegram и начните чат.

Либо перейдите по ссылке @BotFather, либо найдите его имя пользователя.

2) Напишите /newbot на @BotFather и выберите понятное имя бота. Дружественные имена могут содержать пробелы. Пример: Creative Minds Bot .

3) Укажите имя пользователя бота. Это имя не может содержать пробелов и должно заканчиваться на «бот». Пример: CmindsBot .

Ваш бот создан! Теперь вы получите токен доступа.

Вы можете найти его в журналах сообщений @BotFather. Либо отправьте ему сообщение /token @xxx  , где xxx – это имя бота. Например:  /токен @CmindsBot .

4) Скопируйте этот токен и перейдите к плагину: Панель администратора → CM Telegram Bot → Настройки → Настройки API вкладка.

Там в разделе Настройки Telegram API  вам необходимо заполнить следующие поля:

  1. Bot API Key — вставьте сюда скопированный токен.
  2. Имя пользователя бота  — Здесь нужно написать имя пользователя бота без @. В нашем примере это CmindsBot .

    Помните: имя пользователя без пробелов и заканчивается на bot :

  3. Имя отправителя по умолчанию  – если бот не может определить имя отправителя, он будет использовать это имя.

Затем нажмите кнопку Сохранить .

СОВЕТ: отредактируйте бота

С помощью @BotFather вы можете отредактировать своего бота: имя, описание, сведения о нем, фото профиля и список команд. Просто следуйте инструкциям @BotFather .

Создание группы и добавление бота в качестве администратора

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

Плагин Telegram Bot  требует, чтобы бот был частью одной или нескольких групп для получения сообщений и взаимодействия с пользователями.

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

Откройте меню Telegram и нажмите Новая группа .

Во всплывающем окне нужно написать название вашей группы и нажать Далее .

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

И последний шаг: настройка бота администратором. Перейдите к настройкам группы, нажмите «Управление группой» → «Администраторы» → «Добавить администратора ». Затем выберите бота и нажмите Сохранить и Закрыть .

Создание правил — личные сообщения

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

Примеры:

  • Отправка всех сообщений из группы на выбранный адрес электронной почты, кроме тех, которые содержат слово «привет» или «привет»
  • Если кто-то напишет «помощь» в группе, отправьте смс с контактной информацией на выбранный номер

В данном случае мы будем рассматривать ответы бота в Telegram только тому пользователю, который отправил сообщение, содержащее слова или фразы из правила. Итак, перейдите к Панель администратора → CM Telegram Bot → Настройки  Личные сообщения вкладка.

Там вы можете найти следующие поля и опции:

  • Ограничить группу ID — Здесь вам нужно написать ID вашей группы Telegram. Это поле может содержать несколько идентификаторов для разных групп. Должен соответствовать формату «-xxxxxxxx» (символ «-», за которым следуют девять цифр). Примечание: если оставить это поле пустым, правило будет применяться ко ВСЕМ группам, где бот установлен как администратор.

    Чтобы получить идентификатор, перейдите в Telegram и введите /getGroupId в своей группе.

    Примечание: Команды бота Telegram чувствительны к регистру! Таким образом, /getGroupId будет работать, а /getgroupid — нет.

    В ответ вы получите идентификатор группы:

  • Персональное телеграмм сообщение — Напишите здесь сообщение, которое пользователь получит в ответ на свое слово или фразу.
  • Обнаружение фразы/фраз . Правило будет выполняться только в том случае, если оно включает ПО КРАЙНЕЙ МЕРЕ ОДНО из этих слов или фраз.
  • Статус  — Установите правило как активное или приостановленное.
  • Не должно включать . Правило будет выполняться только в том случае, если оно НЕ включает НИ ОДНОГО из этих слов.
  • Должен включать . Правило будет работать, только если оно ДЕЙСТВИТЕЛЬНО включает хотя бы одно из этих слов.
  • Отложить на  — укажите в поле число часов. После того, как правило будет активировано, оно будет «откладываться» на X часов, прежде чем будет готово к повторной активации. Полезно, чтобы избежать спама.
  • Выполнять каждые  — Выполнять правило после каждых X срабатываний триггера. Например, если для обнаружения установлено значение 3, правило будет установлено для следующих 1,4,7.
    • Сброс счетчика — нажмите кнопку, чтобы установить счетчик Выполнять каждые на 0. Пример: правило выполняется каждые 10 сообщений и 9 отправлено, поэтому оно будет выполняться снова в следующем сообщении. Щелкните Reset Count , и правило начнет отсчет с самого начала.
  • Шорткоды Fire — здесь можно разместить один или несколько шорткодов, которые должны выполняться на сайте, на котором запущен бот, после отправки сообщения. Вывод этого шорткода будет напечатан в группе телеграмм, связанной с этим сообщением. Обратите внимание, что не все шорткоды могут быть выполнены для печати вывода в группе Telegram. Узнайте больше о том, как это работает, в этом руководстве. Примечание : эта опция появилась в версии 1.0.5.

Давайте заполним эту форму для нашего примера следующим образом: правило должно реагировать на личное сообщение, когда кто-то набирает слова «привет», «привет» или «привет». Сообщение должно содержать слова «помощь» или «срочно» и не должно содержать слов «администратор» или «администратор».

Затем нажмите кнопку Сохранить :

Сводка условий для ключевых слов

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

Например, если у вас есть:

  • Распознавание фраз – «Привет», «Привет», «Привет»
  • Обязательно – «помощь», «срочно»
  • Не должно включать — «admin», «administration»

С каждым сообщением будет происходить следующее:

  • » Привет, мне нужна срочная помощь! » — активирует правило
  • » Здравствуйте, ребята, это срочно! » — активирует правило
  • » Привет, это администратор .   Кому-нибудь нужна помощь ?» — правило не активируется, потому что у него есть «admin»
  • « Эй, !» — Не будет запускать правило, потому что у него нет «помощи» или «срочно»
  • » Admin help! » — Правило не активируется, так как включает «admin». Кроме того, в нем нет слов «Привет», «Привет» и «Привет»
  • .

Посмотрим результат на интерфейсе:

Создание, дублирование и удаление правила

Каждая вкладка содержит пустое правило.

  1. Добавить правило. . Создавайте дополнительные правила в любое время, нажав эту кнопку.
  2. Дублировать правило  — вы можете дублировать правила и редактировать копии.
  3. Удалить правило — Удалить правило. Примечание: будьте осторожны, так как для этого действия нет подтверждения.

Все изменения (включая удаление) выполняются только после нажатия кнопки Сохранить .

Просмотр журнала — проверка выполненных правил

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

Захват идентификатора группы

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

Чтобы просмотреть журнал, перейдите к панели администратора  → CM Telegram Bot → Журнал .

В журнале отображается информация о каждом действии:

  • Идентификатор группы  – Этот столбец может быть полезен для получения этого номера (вы также можете упорядочить этот столбец по идентификатору).
  • Имя пользователя — Вы можете упорядочить этот столбец по именам пользователей.