Содержание

Telegram-бот на Python: пошаговое руководство

Делимся инструкцией, как написать бота с помощью библиотеки python-telegram-bot за считанные минуты. На примере гайда от программиста Давида Мастроматтео.

Установка python-telegram-bot

Для создания бота понадобится пакет python-telegram-bot — оболочка для API от Telegram. Написать бота с помощью этой библиотеки очень просто, так как она полностью совместима с Python 3.6+.

Первое, что нужно сделать — установить python-telegram-bot. Вот ссылка на официальную документацию библиотеки. 

$ pip install python-telegram-bot –upgrade

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

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

BotFather 1

BotFather 2

У BotFather можно запросить много других интересных вещей.

Например, изменить изображение профиля бота.

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

Программирование бота 

Пакет python-telegram-bot состоит из оболочки API Telegram. Этот инструмент доступен через telegram.Bot-классы. Помимо них, есть еще модуль telegram.ext, который значительно упростит работу.

Модуль telegram.ext содержит много классов, но самые важные — telegram.ext.Updater и telegram.ext.Dispatcher. Updater отвечает за выборку новых обновлений от Telegram. Также он передает их в Dispatcher, после чего они обрабатываются с помощью Handler.

Приступим к программированию:

# mastrobot_example. py
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters

# function to handle the /start command
def start(update, context):
    update.message.reply_text('start command received')

# function to handle the /help command
def help(update, context):
    update.message.reply_text('help command received')

# function to handle errors occured in the dispatcher 
def error(update, context):
    update.message.reply_text('an error occured')

# function to handle normal text 
def text(update, context):
    text_received = update.message.text
    update.message.reply_text(f'did you said "{text_received}" ?')

def main():
    TOKEN = "insert here your token and don't share it with anyone!"

    # create the updater, that will automatically create also a dispatcher and a queue to 
    # make them dialoge
    updater = Updater(TOKEN, use_context=True)
    dispatcher = updater.dispatcher

    # add handlers for start and help commands
    dispatcher.add_handler(CommandHandler("start", start))
    dispatcher.add_handler(CommandHandler("help", help))

    # add an handler for normal text (not commands)
    dispatcher.add_handler(MessageHandler(Filters.text, text))

    # add an handler for errors
    dispatcher.add_error_handler(error)

    # start your shiny new bot
    updater.start_polling()

    # run the bot until Ctrl-C
    updater.idle()

if __name__ == '__main__':
    main()

В функции main создан класс Updater, который автоматически сгенерировал объект Dispatcher, доступный через .dispatcher-свойства класса Updater.

Добавьте несколько обработчиков:

  • команда /start вызывает функцию start(), которая отвечает пользователю информативным сообщением;
  • команда /help вызывает функцию help(), которая отвечает пользователю информативным сообщением;
  • если при отправке сообщений возникает ошибка, вызываем функцию error();
  • если пользователь напишет фразы или символы, которые не являются командой, вызываем функцию text(), отвечающую пользователю тем же полученным текстом.

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

Тестирование

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

$ python mastrobot_example.py

Пошлите ему команду /start .

Ура, бот работает!

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

Чтобы узнать день рождения пользователя, для начала нужно изменить функцию, обрабатывающую команду /start. Чтобы упростить задачу, попросите пользователя указать год, месяц и день рождения.

# function to handle the /start command
def start(update, context):
    first_name = update.message.chat.first_name
    update.message.reply_text(f"Hi {first_name}, nice to meet you!")
    start_getting_birthday_info(update, context)


В параметре update можно найти полезную информацию о пользователе, например, его имя.

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

STATE = None BIRTH_YEAR = 1 BIRTH_MONTH = 2 BIRTH_DAY = 3

Теперь необходимо реализовать функцию start_getting:_birthday_info(), она вызывается с помощью команды start(). После запуска вы получите информацию о дне рождения от пользователя.

def start_getting_birthday_info(update, context):
    global STATE
    STATE = BIRTH_YEAR
    update.message.reply_text(f"I would need to know your birthday, so tell me what year did you born in...")

Для переменной STATE устанавливается значение BIRTH_YEAR, чтобы после ответа пользователя было понятно, что вопрос касался года рождения. Затем отправляется сообщение, чтобы узнать год рождения.

Теперь пользователь ответит обычным текстом, поэтому нужно изменить функцию text().

def text(update, context):
    global STATE

    if STATE == BIRTH_YEAR:
        return received_birth_year(update, context)

    if STATE == BIRTH_MONTH:
        return received_birth_month(update, context)

    if STATE == BIRTH_DAY:
        return received_birth_day(update, context)

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

Эти функции можно записать так:

def received_birth_year(update, context):
    global STATE

    try:
        today = datetime.date.today()
        year = int(update.message.text)
        
        if year > today.year:
            raise ValueError("invalid value")

        context.user_data['birth_year'] = year
        update.message.reply_text(f"ok, now I need to know the month (in numerical form)...")
        STATE = BIRTH_MONTH
    except:
        update.message.reply_text("it's funny but it doesn't seem to be correct...")

def received_birth_month(update, context):
    global STATE

    try:
        today = datetime.date.today()
        month = int(update.message.text)

        if month > 12 or month < 1:
            raise ValueError("invalid value")

        context.user_data['birth_month'] = month
        update.message.reply_text(f"great! And now, the day...")
        STATE = BIRTH_DAY
    except:
        update.message.reply_text("it's funny but it doesn't seem to be correct...")

def received_birth_day(update, context):
    global STATE

    try:
        today = datetime.date.today()
        dd = int(update.message.text)
        yyyy = context.user_data['birth_year']
        mm = context.user_data['birth_month']
        birthday = datetime.date(year=yyyy, month=mm, day=dd)

        if today - birthday < datetime.timedelta(days=0):
            raise ValueError("invalid value")

        context.user_data['birthday'] = birthday
        STATE = None
        update.message.reply_text(f'ok, you born on {birthday}')

    except:
        update.message.reply_text("it's funny but it doesn't seem to be correct...")

Когда получен год рождения пользователя, остается проверить, допустимое ли это значение. Если да, то оно сохраняется в словаре context.user_data[]. Продолжайте устанавливать значения для переменной STATE и задавать следующие вопросы.

Когда зададите последний вопрос и будете знать день рождения, создайте переменную даты и сохраните ее в context.user_data[] словаре.

Если пользователь вводит недопустимое значение, то получает ответ, что оно неверно. Значение переменной STATE не меняется, поэтому пользователь застревает на этом вопросе, пока не ответит правильно.

Создание команды

Теперь нужно обработать команду /biorhythm.

Добавьте новый обработчик команд в функцию main().

dispatcher.add_handler(CommandHandler("biorhythm", biorhythm))

Напишите функцию расчета биоритма:

# This function is called when the /biorhythm command is issued

def biorhythm(update, context):

    user_biorhythm = calculate_biorhythm(

        context.user_data['birthday'])

    update.message.reply_text(f"Phisical: {user_biorhythm['phisical']}")

    update.message.reply_text(f"Emotional: {user_biorhythm['emotional']}")

    update.message.reply_text(f"Intellectual: {user_biorhythm['intellectual']}")

def calculate_biorhythm(birthdate):

    today = datetime.date.today()

    delta = today - birthdate

    days = delta.days

    phisical = math.sin(2*math.pi*(days/23))

    emotional = math.sin(2*math.pi*(days/28))

    intellectual = math.sin(2*math.pi*(days/33))

    biorhythm = {}

    biorhythm['phisical'] = int(phisical * 10000)/100

    biorhythm['emotional'] = int(emotional * 10000)/100

    biorhythm['intellectual'] = int(intellectual * 10000)/100

    biorhythm['phisical_critical_day'] = (phisical == 0)

    biorhythm['emotional_critical_day'] = (emotional == 0)

    biorhythm['intellectual_critical_day'] = (intellectual == 0)

    return biorhythm

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

Полный код бота

# mastrobot_example2.py
import datetime
import math
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters

STATE = None
BIRTH_YEAR = 1
BIRTH_MONTH = 2
BIRTH_DAY = 3

# function to handle the /start command
def start(update, context):
    first_name = update.message.chat.first_name
    update.message.reply_text(f"Hi {first_name}, nice to meet you!")
    start_getting_birthday_info(update, context)

def start_getting_birthday_info(update, context):
    global STATE
    STATE = BIRTH_YEAR
    update.message.reply_text(
        f"I would need to know your birthday, so tell me what year did you born in...")

def received_birth_year(update, context):
    global STATE

    try:
        today = datetime.date.today()
        year = int(update.message.text)

        if year > today.year:
            raise ValueError("invalid value")

        context.user_data['birth_year'] = year
        update.message.reply_text(
            f"ok, now I need to know the month (in numerical form)...")
        STATE = BIRTH_MONTH
    except:
        update.message.reply_text(
            "it's funny but it doesn't seem to be correct...")

def received_birth_month(update, context):
    global STATE

    try:
        today = datetime.date.today()
        month = int(update.message.text)

        if month > 12 or month < 1:
            raise ValueError("invalid value")

        context.user_data['birth_month'] = month
        update.message.reply_text(f"great! And now, the day...")
        STATE = BIRTH_DAY
    except:
        update.message.reply_text(
            "it's funny but it doesn't seem to be correct...")

def received_birth_day(update, context):
    global STATE

    try:
        today = datetime.date.today()
        dd = int(update.message.text)
        yyyy = context.user_data['birth_year']
        mm = context.user_data['birth_month']
        birthday = datetime.date(year=yyyy, month=mm, day=dd)

        if today - birthday < datetime.timedelta(days=0):
            raise ValueError("invalid value")

        context.user_data['birthday'] = birthday
        STATE = None
        update.message.reply_text(f'ok, you born on {birthday}')

    except:
        update.message.reply_text(
            "it's funny but it doesn't seem to be correct...")

# function to handle the /help command
def help(update, context):
    update.message.reply_text('help command received')

# function to handle errors occured in the dispatcher
def error(update, context):
    update.message.reply_text('an error occured')

# function to handle normal text
def text(update, context):
    global STATE

    if STATE == BIRTH_YEAR:
        return received_birth_year(update, context)

    if STATE == BIRTH_MONTH:
        return received_birth_month(update, context)

    if STATE == BIRTH_DAY:
        return received_birth_day(update, context)

# This function is called when the /biorhythm command is issued
def biorhythm(update, context):
    print("ok")
    user_biorhythm = calculate_biorhythm(
        context.user_data['birthday'])

    update.message.reply_text(f"Phisical: {user_biorhythm['phisical']}")
    update.message.reply_text(f"Emotional: {user_biorhythm['emotional']}")
    update.message.reply_text(f"Intellectual: {user_biorhythm['intellectual']}")

def calculate_biorhythm(birthdate):
    today = datetime.date.today()
    delta = today - birthdate
    days = delta.days

    phisical = math.sin(2*math.pi*(days/23))
    emotional = math.sin(2*math.pi*(days/28))
    intellectual = math.sin(2*math.pi*(days/33))

    biorhythm = {}
    biorhythm['phisical'] = int(phisical * 10000)/100
    biorhythm['emotional'] = int(emotional * 10000)/100
    biorhythm['intellectual'] = int(intellectual * 10000)/100

    biorhythm['phisical_critical_day'] = (phisical == 0)
    biorhythm['emotional_critical_day'] = (emotional == 0)
    biorhythm['intellectual_critical_day'] = (intellectual == 0)

    return biorhythm

def main():
    TOKEN = "insert here your token and don't share it with anyone!"

    # create the updater, that will automatically create also a dispatcher and a queue to
    # make them dialoge
    updater = Updater(TOKEN, use_context=True)
    dispatcher = updater.dispatcher

    # add handlers for start and help commands
    dispatcher.add_handler(CommandHandler("start", start))
    dispatcher.add_handler(CommandHandler("help", help))
    # add an handler for our biorhythm command
    dispatcher.add_handler(CommandHandler("biorhythm", biorhythm))

    # add an handler for normal text (not commands)
    dispatcher.add_handler(MessageHandler(Filters.text, text))

    # add an handler for errors
    dispatcher.add_error_handler(error)

    # start your shiny new bot
    updater.start_polling()

    # run the bot until Ctrl-C
    updater.idle()


if __name__ == '__main__':
    main()


Пришло время проверить его:

Telegram bot

Поздравляем! Telegram-бот на Python полностью готов. 

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

Как создать бота в Telegram

Что нужно знать, прежде чем создавать бота в Telegram

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

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

Но так или иначе сначала бота нужно создать. Делается это следующим образом.

Как создать бота в Telegram

Чтобы сделать своего бота, понадобится другой бот — BotFather. Это официальный инструмент для создания ботов и управления ими. Найти BotFather можно через поиск. Обратите внимание на синюю галочку рядом с именем: именно она укажет на правильный чат.

Запустите диалог с ним и нажмите «Начать».

Кликните по кнопке меню и выберите /newbot.

BotFather попросит назвать вашего бота. Введите желаемое имя и нажмите «Отправить».

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

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

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

Как настроить бота в Telegram

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

Также при желании можно добавить описание (/setdescription), прикрепить аватар (/setuserpic) или сменить имя (/setname). Все эти действия осуществляются через меню в BotFather. Если у вас несколько ботов, то сначала придётся выбрать нужный из списка.

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

Подключение бота

Сначала нужно открыть чат с Manybot, перейдя по ссылке, и нажать «Начать».

Затем выбрать удобный для вас язык.

Кликните «Добавить нового бота».

А вот теперь понадобится токен созданного ранее бота, который выдал BotFather. Нажмите «Я скопировал токен» и отправьте его Manybot.

Добавьте описание бота, которое будут видеть пользователи, или пропустите этот шаг.

Создание команд

Далее вернитесь к своему боту, которого создали с помощью BotFather, и нажмите «Начать».

Выберите «Пользовательские команды».

Затем — «Создать команду».

Придумайте название команды латинскими буквами, начиная со слеша.

Впишите текст, добавьте ссылки или фото, которые увидит пользователь после вызова команды. Сообщений может быть несколько. Нажмите «Отправить», а затем «Сохранить».

Таким же образом через меню «Создать команду» добавьте остальные команды, которые вам нужны. В нашем примере это подкасты, вакансии и обратная связь.

Добавление кнопок в меню

Чтобы пользователи могли взаимодействовать с ботом через графический интерфейс, а не вводить команды вручную, необходимо добавить кнопки для каждой из них. Для этого нажмите «Настроить гл. меню».

Кликните «Добавить пункт меню».

Выберите нужную команду.

Придумайте название для кнопки и нажмите «Отправить».

По такому же принципу добавьте кнопки для других команд.

Проверка работы бота

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

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

Читайте также 📱📳📲

Создание бота в телеграме, как создать

Я был одержим научной фантастикой, когда был подростком, поэтому кодирование всегда меня привлекало. Меня нравилась сама мысль о том, что можно написать программу, которая ведет себя случайным образом – для меня, это было нечто в области фантастики!

Эта навязчивая идея подпитывала мои первые попытки в кодировании, и в результате появилось много забавных ботов. Например, этот, который описывает страшные места, путем объединения слов наугад, и этот, который рисует PNG в цветах блоков.

Ничего необычного. Я едва ли мастер-программист, и вам тоже не обязательно им быть. Благодаря базовому пониманию кодирования и API-интерфейсов вы можете создать действительно полезное программное обеспечение для удовольствия и прибыли. В этом уроке мы рассмотрим создание бота в Telegram с нуля.

Бот Telegram можно использовать с Intercom API, чтобы предоставить агентам поддержки доступ к своим клиентам, которые используют Telegram. Он также может включать автоматизацию, которая объединяет полезные ресурсы с чатом в прямом эфире, например, в примере ниже из orat.io :

Telegram – отличный дом для ботов, ориентированных на клиентов, с более чем 200 000 000 активных пользователей в месяц и годовой прирост в 50% . Это платформа, которую может использовать ваша аудитория, что поможет вам избежать разногласий и будет способствовать взаимопониманию. Кроме того, создание ботов для Telegram – самый простой способ создания ботов.

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

Первый бот, который я сделал для Telegram, использовал RSS, чтобы найти материалы на канале Hacker News, которые соответствуют поисковому запросу:

Можете воспользоваться этим ботом – он здесь и он жив!

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

В этом руководстве вы узнаете:

  • Как написать код для бота с нуля
  • Как добавить новые команды в словарь бота
  • Основные команды терминала для создания файлов и навигации по папкам
  • Немного языка программирования Ruby
  • Как расширить Ruby с помощью Gems (пакет инструментов)
  • Как заставить ваш бот удалял случайные ответы из списка
  • Несколько простых команд git, которые помогут вам управлять и передавать ваши файлы
  • Как развернуть бота на сервере и запустить его 24/7

Перед запуском вам понадобятся:

  • Баш-терминал.  Поставляется в комплекте с такими операционными системами как macOS и Linux, но не Windows. Если вы следуете этому руководству на компьютере под управлением Windows, у которого нет обновления для Windows 10 , вы можете использовать .
  • Рубин. Обратитесь к официальной документации Ruby для руководств по конкретным ОС. Я лично использую Homebrew на macOS, но пользователи Windows могут установить его с помощью виртуального эмулятора, который вы можете выбрать здесь (https://www.slant.co/topics/1552/~best-terminal-emulators-for-windows) .
  • Bundler. Bundler помогает управлять пакетами инструментов (gems) для Ruby, которые добавляют дополнительные функции вашим приложениям. Для этого вам понадобится добавить интерфейс к API Telegram к вашему боту. Просто введите  gem install bundler в свой, чтобы установить его.
  • Текстовый редактор. Теоретически вы можете использовать Notepad или TextEdit, но большинство из них рекомендовало бы специально созданный редактор, такой как Atom , который выделяет синтаксис и помогает сделать ошибки кода более очевидными.

С этим все, давайте пойдем дальше.

Шаг 1. Загрузите приложение Telegram для рабочего стола

Телеграмм – это преимущественно мобильное приложение, но для удобства вы можете установить его на том же компьютере, который вы используете для написания кода. Таким образом, вы можете быстро протестировать его, не используя телефон. И вы сможете скопировать и вставить ключ API-робота Telegram прямо в текстовый редактор.

Как же получить этот ключ API?

Шаг 2. Чат с BotFather, чтобы получить ключ API

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

Отправьте команду запуска BotFather, набрав /start .

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

По сравнению с процессом создания бот-сервера Twitter, бота Mastodon или любого другого бота, с которым я экспериментировал, Telegram упрощает первоначальную настройку. Наверное, это доказывает, что Telegram ― это отличный инструмент для работы с ботом!

После предоставления команды /newbot вы можете выбрать имя и имя пользователя для своего бота. Название – это то, что ваши пользователи будут видеть бота, как в списке своих контактов, и имя пользователя, как они его найдут. Подумайте о имени пользователя, как и в Twitter; оно должно быть уникальным, и лучше всего, если оно короткий и легко запоминается.

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

На этом чат BotFather завершен, переходим к коду!

Шаг 3: Настройка GEMS и каталога бота

Откройте терминал и введите mkdir telegram-bot . Это создаст новый каталог для файлов вашего бота. Лучше всего держать их в одной папке, чтобы можно было легко ей управлять. Перейдите в каталог cd telegram-bot и выполните следующие действия:

touch Gemfile
touch bot.rb
atom .

Это действие создаст два пустых файла, один для указания GEMS, которые вам понадобятся, и тот, где будет содержаться код бота. Последняя команда открывает оба этих файла в Atom.

Нажмите Gemfile на боковой панели Atom и вставьте следующее:

source ‘https://rubygems.org’ gem ‘telegram_bot’

source ‘https://rubygems.org’

gem ‘telegram_bot’

Это нужно Bundler, чтобы захватить интерфейс Ruby API Telegram от rubygems.org.

Чтобы завершить настройку gem, вернитесь к своему терминалу и введите bundle . Вот что вы должны увидеть:

Вот и все, что касается настройки gems, теперь мы наконец попадаем в код.

Кодирование вашего первого бота Telegram

Фактический код, который будет постоянно работать на сервере, находится внутри файла bot.rb. Сейчас он пуст, но здесь мы собираемся связать gems с Telegram, который мы только настроили и создадим бота.

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

Так будет выглядеть в Telegram то, что делает код выше:

Давайте посмотрим, что делает каждая часть кода:

require ‘telegram_bot’ token = ‘TOKEN’ bot = TelegramBot.new(token: token)

require ‘telegram_bot’

token = ‘TOKEN’

bot = TelegramBot.new(token: token)

(Замените TOKEN маркером API, который вы скопировали из BotFather)

Ruby позволяет довольно легко угадать, какой код будет выполняться. Три приведенные выше строки добавляют функциональность ботов Telegram к вашему файлу, а затем создают новый бот-объект из класса TelegramBot, аутентифицированный вашим токеном (генератор одноразовых паролей в системах аутентификации), поэтому программа знает, куда отправлять данные.

Следующая часть – одна большая петля. Сначала это кажется сложным, сейчас я объясню вам все по порядку.

bot.get_updates(fail_silently: true) do |message| puts «@#{message.from.username}: #{message.text}» command = message.get_command_for(bot) message.reply do |reply| case command when /start/i reply.text = «All I can do is say hello. Try the /greet command.» when /greet/i reply.text = «Hello, #{message.from.first_name}. « else reply.text = «I have no idea what #{command.inspect} means.» end puts «sending #{reply.text.inspect} to @#{message.from.username}» reply.send_with(bot) end end

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

bot.get_updates(fail_silently: true) do |message|

  puts «@#{message.from.username}: #{message.text}»

  command = message.get_command_for(bot)

 

  message.reply do |reply|

    case command

    when /start/i

      reply.text = «All I can do is say hello. Try the /greet command.»

    when /greet/i

      reply.text = «Hello, #{message.from.first_name}. «

    else

      reply.text = «I have no idea what #{command.inspect} means.»

    end

    puts «sending #{reply.text.inspect} to @#{message.from.username}»

    reply.send_with(bot)

  end

end

 

Первая строка говорит боту продолжать слушать команды. И когда он получает команду передать его в переменную message . Строка puts записывает команду на ваш терминал, чтобы вы могли видеть, что происходит во время запуска бота.

Действия ответчика бота хранятся в case-заявлении. Ввод case case подается через переменную message после того, как он был очищен методом get_command_for . Текст ответа бота устанавливается в зависимости от сохраненной команды и затем отправляется с send_with до перезапуска цикла.

С помощью этой настройки теперь вы можете найти своего бота на Telegram и отправить команды /start и /greet и посмотреть его в действии.

Для этого сохраните изменения в Atom и запустите ruby bot.rb в терминале. Пока этот терминал открыт и работает, ваш бот отправляет ответы!

Настройка нового блестящего бота

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

Части, на которые следует обратить внимание при настройке, это строки when /command/i и текст между кавычками в строках reply.txt . Это те сообщения, которые принимает ваш бот, и которые он отправляет обратно в качестве ответов.

Итак, если вы хотите сказать что-то другое как ответ на команду /greet , вы должны изменить значение reply.text под командной строкой приветствия ( when /greet/i ). Вот вариант, который вы могли бы попробовать:

when /greet/i greetings = [‘bonjour’, ‘hola’, ‘hallo’, ‘sveiki’, ‘namaste’, ‘salaam’, ‘szia’, ‘halo’, ‘ciao’] reply.text = «#{greetings.sample.capitalize}, #{message.from.first_name}!»

when /greet/i

      greetings = [‘bonjour’, ‘hola’, ‘hallo’, ‘sveiki’, ‘namaste’, ‘salaam’, ‘szia’, ‘halo’, ‘ciao’]

      reply.text = «#{greetings.sample.capitalize}, #{message.from.first_name}!»

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

Превращение вашего бота в нечто удивительное

Вы можете добавить столько команд, ответов и функций своему боту, сколько захотите. Большинство из них – это задачка для вашего воображения. Если вы хотите узнать много других интресных вещей, которые применимы к вашему боту, начните с Learn Ruby the Hard Way, чтобы понять основные принципы языка кодирования. С небольшой практикой и надежной зависимостью от StackOverflow вы сможете:

  • Подключите другие API-интерфейсы, чтобы извлекать данные из таких источников, как Airtable , Slack , RSS или Twitter . Здесь наблюдается действительно захватывающая функциональность – вы можете создать бота, который действует как диалоговый интерфейс к набору данных или функций, например, боту, который возвращает результаты поиска из Twitter или сообщения в Slack.
  • Храните пользовательский ввод в базе данных. Вы можете создать бот Telegram, который предлагает автоматическую поддержку пользователям или отвечает на запросы, и сохраняет их адреса электронной почты в базе данных. Sequel gem позволяет легко создавать, писать, редактировать и читать базы данных.
  • Постройте свою текстовую игру. Colossal Cave Adventure – одна из первых игр с использованием бота , была перенесена на Telegram. Проверьте здесь и посмотрите источник здесь .

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

Запуск бота 24/7

Прямо сейчас, ваш бот работает на вашем компьютере. Это нормально, пока вам не потребуется перезагрузить компьютер, ваш wi-fi или ваш компьютер перейдёт в спящий режим. Когда это произойдет, это завершит процесс работы бота, и пользователи не получат от него ответа.

Процесс перемещения вашего бота из среды разработки (ваш компьютер, на котором вы использовали Atom для записи бота) в производственную среду (сервер), называется развертыванием. Существует несколько вариантов развертывания вашего бота, но в обоих случаях мы начнем с загрузки файлов в Bitbucket . Bitbucket позволяет использовать git , систему управления версиями, которая поможет вам безопасно сделать и отслеживать изменения в коде вашего бота. Загружая файлы бота в Bitbucket, вы можете использовать Bitbucket как способ захватить файлы бота, когда вы вошли в систему.

Подпишитесь на Bitbucket и создайте свой сервер.

При открытии терминала и в том же каталоге, что и исходный код бота, введите следующее:

git init git add . git commit -m ‘initial commit’

git init

git add .

git commit -m ‘initial commit’

Теперь следуйте инструкциям Bitbucket. Вот как это сделал я:

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

Развертывание с помощью Raspberry Pi

Этот одноплатный компьютер Raspberry Pi на моем столе содержит кучу ботов

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

Развертывание с помощью облачного сервера

Вам не нужно владеть компьютером, на котором работает ваш бот, вы можете использовать память и мощность чужой машины для запуска бота удаленно. Популярные решения для развертывания в облаке включают Amazon Web Services (AWS), DigitalOcean и Heroku.

Самые подходящие для начального уровня – DigitalOcean и Heroku. Нажмите здесь, чтобы получить учетную запись DigitalOcean, которая поставляется с кредитом в размере 10 долларов – достаточно для запуска сервера в течение двух месяцев, пока вы его протестируете.

Когда вы подписываетесь на DigitalOcean , вы узнаете, как подключиться к серверу через SSH и запустить консоль.

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

Процесс развертывания

На новом сервере – будь то Raspberry Pi или облачный сервер, например, Digital Ocean, вам нужно установить Ruby, Bundler и Git:

sudo apt-get update sudo apt-get upgrade curl -L https://get.rvm.io | bash -s stable —ruby sudo apt-get install bundler sudo apt-get install git

sudo apt-get update

sudo apt-get upgrade

curl -L https://get.rvm.io | bash -s stable —ruby

sudo apt-get install bundler

sudo apt-get install git

Затем создайте новый каталог для своего бота, перейдите туда и загрузите файлы из Bitbucket со следующими командами:

mkdir bots cd bots git clone https:// [email protected] /benjbrandall/telegram-bot.git

mkdir bots

cd bots

git clone https:// [email protected] /benjbrandall/telegram-bot.git

Не забудьте заменить URL выше (https: // benjbran …) URL-адресом вашего сервера. Вы найдете всю команду clone через Bitbucket, так что вам не придется делать это вручную.

Затем введите bundle для установки зависимостей gem, а затем ruby bot.rb чтобы запустить бот, который теперь будет работать постоянно.

Примечание. Если вы получаете доступ к своему серверу через SSH, вам нужно запустить бот с nohup ruby bot.rb  и убедиться, что бот не перестает работать, когда сеанс SSH завершается. Теперь вы можете закрыть окно, зная, что ваш бот тихонько подает звуковой сигнал в фоновом режиме. Можно ли восстановить удаленные сообщения в ватсапе читайте в нашей статье.

Это всё, что нужно для создания вашего первого Бота в Telegram. По пути вы узнали о Ruby, gems, Telegram API и о том, как развернуть бота на сервере. Любые вопросы или предложения? Дай мне знать в комментариях! Сканировать штрих код вы можете скачав приложение.

 


Создание бота для Telegram — Служба Azure Bot — Bot Service

  • Чтение занимает 2 мин

В этой статье

применимо к: Пакет SDK v4APPLIES TO: SDK v4

Вы можете настроить взаимодействие бота с другими пользователями с помощью программы для обмена сообщениями Telegram.You can configure your bot to communicate with people using the Telegram messaging app.

Получение доступа к BotFather для создания бота TelegramVisit the Bot Father to create a new Telegram bot

Создание нового Telegramного робота с помощью Bot-робота.Create a new Telegram bot using the Bot Father.

Создание бота TelegramCreate a new Telegram bot

Чтобы создать бот Telegram, отправьте команду /newbot.To create a new Telegram bot, send command /newbot.

Указание понятного имениSpecify a friendly name

Присвойте боту Telegram понятное имя.Give the Telegram bot a friendly name.

Указание имени пользователяSpecify a username

Присвойте боту Telegram уникальное имя пользователя.Give the Telegram bot a unique username.

Копирование маркера доступаCopy the access token

Скопируйте маркер доступа бота Telegram.Copy the Telegram bot’s access token.

Ввод маркера доступа бота TelegramEnter the Telegram bot’s access token

Перейдите к разделу Каналы бота на портале Azure и нажмите кнопку Telegram.Go to your bot’s Channels section in the Azure portal and click the Telegram button.

Примечание

Пользовательский интерфейс портала Azure будет выглядеть немного иначе, когда вы подключите бота к Telegram.The Azure portal UI will look slightly different if you have already connected your bot to Telegram.

Вставьте ранее скопированный маркер в поле Маркер доступа и нажмите кнопку Сохранить.Paste the token you copied previously into the Access Token field and click Save.

Бот настроен для взаимодействия с пользователями в Telegram.Your bot is now successfully configured to communicate with users in Telegram.

Создаем бота для Telegram

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

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

Нам понадобятся следующие библиотеки и программы:

  • pip — менеджер пакетов для Python
  • python — интерпретатор языка
  • virtualenv — виртуальное окружение
  • telebot — обертка над telegram API для языка Python

Теперь откроем консоль и наберем несколько команд. Первым делом загрузим менеджер пакетов для питона и виртуальное окружение, внутри которого мы будем устанавливать все остальные пакеты, чтобы не засорять систему и не порождать конфликтов с другими проектами. Также скачаем проект telebot, который носит название pyTelegramBotAPI.

sudo apt-get install python-pip sudo pip install pyTelegramBotAPI sudo pip install virtualenv

Следующая команда создаст в вашей директории новую директорию venv, в которой будет хранить все локальные библиотеки. Подробности про виртуальные окружения можно прочитать по адресу: http://docs.python-guide.org/en/latest/dev/virtualenvs/ Можно работать и без виртуального окружения, но тогда убедитесь, что устанавливаемые вами библиотеки не конфликтуют с другими библиотеками в системе (например, могут сломаться некоторые программы, заточенные под старые версии пакетов).

virtualenv venv

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

source venv/bin/activate

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

Начнем с создания простого бота для Telegram. Чтобы наш бот функционировал, нужно первым делом его создать. Для этого в телеграме есть специальный мета-бот BotFather (@BotFather). Добавьте его через поиск в вашем клиенте телеграмма. Список его команд можно получить, написав в чате с ним команду /help. Для создания нового бота нужно написать команду /newbot и в следующем сообщении передать название бота (должно заканчиваться словом bot). В ответ вам придет сообщение с API токеном — он понадобится нам для создания соединения с телеграммом.

Создайте файл simplebot.py со следующим содержанием:

# -*- coding: utf-8 -*- import telebot bot = telebot.TeleBot("") @bot.message_handler(commands=['help', 'start']) def send_welcome(message): msg = bot.send_message(message.chat.id, 'Привет! Я codex_bot!') @bot.message_handler(commands=['auth']) def send_auth(message): pass bot.polling()

Код довольно интуитивен, поясним только основные идеи. Когда пользователь будет вводить команды /start и /help — выполнится функция send_welcome, которая отправит пользователю в чат сообщение с приветствием. При вводе /auth пока ничего происходить не будет.

Запустите бота командой:

python simplebot.py

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

/setdescription

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

/setcommands

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

команда1 - Описание команды команда2 - Еще одно описание команды

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

Как создать чат-бот для напоминаний в Телеграм с помощью Node-RED

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

 

Что такое Node-RED и как он работает?

 

Node-RED — браузерный редактор потоков данных, который позволяет легко объединять потоки данных, используя различные ноды, которые собираются в палитры (node red palette). 

Нода — узел данных; ноды децентрализованной сети контактируют посредством P2P-протоколов для обмена информацией о блоках и транзакциях.Узел является основным строительным блоком потока.

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

Палитра Node-RED включает набор узлов по умолчанию, которые являются основными строительными блоками для создания потоков.

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

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

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

Встроенная библиотека нод позволяет сохранять полезные функции, шаблоны или потоки для повторного использования.

Использование Node-RED — бесплатно, кроме этого Node-RED с помощью API может интегрироваться к чему-угодно.

 

Аналоги Node-RED

 

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

Чат-бот может быть настроен на распознавание определенных слов или фраз и отправку пользователям заранее определенных ответов. Он может отправлять автоматизированные ответы на наиболее распространенные и часто задаваемые вопросы. Кроме этого Chatfuel может легко интегрироваться с YouTube, Twitter, JSON, Messenger и другими. Использование Chatfuel — бесплатно, но существует набор дополнительного расширенного платного функционала. 

Botsify тоже дает возможность создавать чат-боты на виджете сайта или в Facebook мессенджере без каких-либо знаний в программировании. Botsify интегрирован со многими сервисами, включая WordPress, Shopify, Slack, Alexa, Google Sheets, RSS Feed, JSON API, ZenDesk. Простой в использовании интерфейс позволяет построить логику работы с помощью визуальных инструментов. Botsify — платный инструмент, и его стоимость зависит от количества создаваемых ботов и числа подписчиков ботов.

 

Недостатки аналогов Node-RED

 

Основные недостатки Botsify и Chatfuel — данные инструменты предназначаются или для работы только с одним мессенджером, или платные. Поэтому Node-RED является незаменимым инструментом для начала работы и ознакомлением с созданием ботов, так как сочетает в себе удобный интерфейс, функциональность и не требует дополнительных ресурсов.

 

Создать чат-бота в Телеграм на Node-RED

 

Для создания бота в Telegram необходимо зайти в приложение и найти @BotFather. После чего вызвать команду /newbot и дать название боту.

После этого генерируется токен, необходимый для подключения бота к Node-RED. 

 

Установка Node-RED

 

Далее необходимо установить Node-RED на компьютер и запустить сервер с Node-RED на локальной машине. В Terminal на вашем Mac-компьютере выполните следующие команды:

 node-red -u «./»

После этого в строке браузера нужно ввести http://localhost:1880 и мы получим доступ к чистому флоу Node-RED, который будет использован в дальнейшей работе. 

Для сетапа веб хуков (пользовательских обратных вызовов по HTTPS) и возможности отправки сообщений (логов) на Node-RED серверу, необходимо использовать протокол HTTPS, иначе мессенджер не сможет отправить тело сообщения на URL, который использует защищенное соединение. 

Для устранения этой проблемы чаще всего используется ngrok (защищенные тоннели для передачи информации на localhost) или localtunnel. Ниже мы воспользуемся сервисом ngrok. Для этого нужно перейти по ссылке на сайт ngrok и зарегистрироваться. После ввода всех обязательных данных, необходимо скачать и разархивировать файл.

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

 [путь к месту где лежит ngrok]/ngrok authtoken [полученный при регистрации токен]

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

/ngrok http 1880

В дальнейшем настраиваем хуки, с полученным защищенным адресом ngrok, в данном случае https://41b24bad1175.ngrok.io. Далее воспользуемся API документацией, которую предоставляет Telegram.

 

Настройка логики бота

 

Для подключения и получения сообщений, нужно применить следующие ноды. Блок inject будет использован для инициирования сетапа, связку бота и сервера Node-RED определяем в блоке http request

В блоке http request задаем следующие параметры: метод POST, после чего формируем URL из следующих частей 

https://api.telegram.org/[idбота]/setWebhook?url=[используемый_ngrok]/[вебхук_Node_red]

  • idбота предоставляется непосредственно при регистрации бота в @BotFather как параметр в токене через двоеточие. В нашем случае 1170972715:AAEntMHSaQEOD2ueLXb1VWmDoidnnbnEQCI)
  • используемый_ngrok — в этом примере https://41b24bad1175.ngrok.io 
  • вебхук_Node_red является нода, которая непосредственно будет “ловить” сообщения пользователей. Используем http in ноду, задав ей следующие параметры method POST, URL — /first_bot, (данный урл и является нашим хуком Node-RED)

В конечном итоге наша ссылка имеет следующий вид:

https://api.telegram.org/bot1170972715:AAEntMHSaQEOD2ueLXb1VWmDoidnnbnEQCI/setWebhook?url=https://41b24bad1175.ngrok.io/first_bot

Заполнив все поля нажимаем Done и в верхнем правом углу нажимаем на кнопку Deploy. Кнопка Deploy сохраняет все изменения, которые были внесены во флоу, поэтому перед каждым тестом необходимо ее нажать, если она активна.

Все сообщения-логи, которые приходят в Node-RED, можно найти во вкладке с правой стороны флоу Debug messages.После открытия вкладки Debug messages, сетапим хук нажатием на  node inject

Если все описанные выше шаги выполнены верно, будет отображен ответ об успешном подключении со статус-кодом 200. 

 

Как отправить первое сообщение пользователю в Телеграм боте

 

Отправить сообщение боту очень просто, для этого необходимо знать кому что отправить, то есть параметры text и chat_id

Чтобы узнать параметр chat_id можно использовать ноду debug и установить отлавливание в ней complete message object. Для этого соединим ее с нодой, которая ловит все наши сообщения и получим следующее:

После чего перейдите в бот и отправьте ему первое сообщение (по умолчанию — команду /start)

После этого получим объект, в котором непосредственно отображается вся информация, присланная в Telegram. Для отправки сообщения необходим параметр id, который можно найти в полученном логе по данному пути payload.message.chat.id

Для отправки сообщения используется следующий URL:

https://api.telegram.org/bot<токен бота >/sendMessage

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

По аналогии, ниже описан алгоритм как отправить письмо-сообщение в боте: 

1. Указываем что именно мы отправляем, а не получаем или обновляем

  msg.method=»POST»

2. Указываем кто будет “перевозить” наше письмо (разные токены = разные “перевозчики”, “перевозчик” = “бот”)

msg.url= «https://api.telegram.org/bot1170972715:AAEntMHSaQEOD2ueLXb1VWmDoidnnbnEQCI/sendMessage»

3. Ну и конечно же необходимо написать само послание и кому мы его отправим

msg.payload = {

  «text»: «Выпей воды»,

  «chat_id»: msg.payload.message.from.id,

  }

4. Все готово, в шаблоне отправки даже не нужно указывать номер телефона, только сообщить ноде какой текст нужно отправить. Для этого используем команду — return msg.

5. Далее необходимо “перевезти” наше письмо. Так как мы указали уже всю информацию выбираем — set by msg. method 

6. Протестируем, вернемся в бот и снова вызовем команду /start . Бот должен сразу нам прислать сообщение. Работает! УРА 🙂

Периодичность отправки сообщений

 

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

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

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

Теперь receiver, то есть chat_id пользователя, нигде не потеряется и может быть использован повторно, даже если мы не получим сообщение от пользователя. 

Также добавим таймер и зададим значение в 1 мин — блок delay 1m. Соединим его с блоком отправки сообщения. Таким образом после первой отправки сообщения пройдет 1 минута и сообщение отправится вновь.

Протестируем.

Далее увеличим периодичность отправки сообщений на 1 час или любую другую величину — в блоке delay.

Бот для напоминаний в Телеграм — готов

 

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

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

После чего, если пользователь вызвал команду /start, выведем ему сообщение “Привет! Выбери как часто напоминать тебе о воде?😏”, а также кнопки для выбора периодичности — 30 мин, 1 час, 2 часа. 

Кнопки с текстом в Телеграм оглашаются следующим образом: 

«text»: «Привет! Выбери как часто напоминать тебе о воде?😏»,

        «reply_markup»: {

            «keyboard»: [[‘Каждые полчаса’],[‘Каждый час’], [‘Каждые два часа’]],

                  ‘resize_keyboard’ : true, 

      ‘one_time_keyboard’ : false

каждое с [] в keyboard, оглашает новую кнопку, а текст в [] — отвечает за надпись, которая будет выводится на кнопке. Кнопки и текст размещаем в  msg.payload, к функции также добавляем msg.method i msg.url.

msg.method=»POST»

msg.url= «https://api.telegram.org/bot1170972715:AAEntMHSaQEOD2ueLXb1VWmDoidnnbnEQCI/sendMessage»

msg.payload = {

        

        «text»: «Привет! Выбери как часто напоминать тебе о воде?😏»,

        «reply_markup»: {

            «keyboard»: [[‘Каждые полчаса’],[‘Каждый час’], [‘Каждые два часа’]],

                  ‘resize_keyboard’ : true, 

      ‘one_time_keyboard’ : false

        },

«chat_id»: msg.receiver

}

 return msg;

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

В каждой из функций выведем сообщение, только в «text» — выведем разные тексты, такие как (Отлично! Буду напоминать каждые полчаса😌, Отлично! Буду напоминать каждый час😉, Отлично! Буду напоминать каждые два часа😎)

msg.method=»POST»

msg.url= «https://api.telegram.org/bot1170972715:AAEntMHSaQEOD2ueLXb1VWmDoidnnbnEQCI/sendMessage»

msg.payload = {

«text»: «Отлично! Буду напоминать каждый час😌»,

«chat_id»: msg.receiver }

return msg;

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

msg.method=»POST»

msg.url= «https://api.telegram.org/bot1170972715:AAEntMHSaQEOD2ueLXb1VWmDoidnnbnEQCI/sendMessage»

msg.payload = {

«text»: «Выпей воды»,

«chat_id»: msg.receiver }

return msg;

 

После отправки сообщения, вернем на таймер, для повторения отправки сообщения. 

Протестируем.

Выберем, к примеру, первый вариант — Каждые полчаса.

Итого

В этой статье мы разобрались как работает Node-RED и как создать в Телеграмм чат-бота для напоминаний.

Команда Chatbots.Studio выполняет разработку чат-ботов в мессенджерах — Apple Business Chat, WhatsApp, Telegram, FB Messenger и Viber. Если вам интересны статьи об использовании Node-RED в других мессенджерах, подписывайтесь на наш Фейсбук и следите за появлением новых статей.

 

Вам интересно создавать чат-ботов? 

 

Стройте карьеру вместе с Chatbots.Studio! Chatbots.Studio — это место для инженеров, которые ищут эффективные и творческие способы решения сложных проблем и постоянно совершенствуют существующие подходы к созданию новых продуктов.

 

Нужно создать бота со сложным функционалом?

 

Если нужно создать сложное решение на базе Node-RED, команда Chatbots.Studio разработает бота любой сложности (наши кейсы). Для этого оставьте заявку в форме ниже.

Создаем бота в Telegram без навыков программирования

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

Для чего вообще нужен бот Telegram

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

  • показывать новости по заданной теме;
  • находить и скачивать любую информацию;
  • отвечать на часто задаваемые вопросы;
  • присылать обновления с сайта;
  • заменять или дополнять email-рассылку;
  • проводить опросы;
  • играть с посетителями и др.

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

Создание бота для Telegram

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

Создается новый бот при помощи еще одного бота: @BotFather. Для начала его нужно добавить в свой контакт-лист и запустить.

Затем вводим команду /newbot — создание нового бота. BotFather попросит придумать новое уникальное имя для этого бота, которое обязательно должно заканчиваться на «bot». Можно также добавить аватар для бота и его описание.

Далее BotFather присылает уникальный токен API, который нужно скопировать в буфер обмена и переместить в какой-нибудь текстовый файл, потому что запомнить его просто невозможно.

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

Controller Bot

Отличный инструмент для владельцев каналов с такими возможностями:

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

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

Чтобы начать использование бота в своем канале, откройте @ControllerBot и введите команду /addchannel, чтобы подключить канал. На это бот ответит вам необходимостью подключения своего бота.

Просто отправьте ранее скопированный токен в чат, и ваш бот будет подключен.

Все, теперь наш бот обладает функционалом Controller Bot и может делать посты в канал.

Не забудьте добавить своего бота в администраторы канала.

Таким же образом можно «свести» своего бота с ботами, функционал которых позволяет проводить опросы, ставить лайки, голосовать, смотреть статистку, делать Insta View посты и многое другое.

Небольшое приятное дополнение в виде списка полезных ботов для Telegram

В этих каналах собрана инфа, как упростить работу с различными видами контента:

  • @ivideobot — классный помощник, готовый скачать любой ролик с YouTube, для это нужно просто отправить ему нужную ссылку, а результат получите уже через секунду;
  • @music — позволяет легко скачать и прослушать любимые произведения, не выходя из Telegram;
  • @imagesearchbot — осуществляет поиск картинок по ключевому слову и позволяет выбрать качество фото для скачивания;
  • @instasave_bot — найдет и скачает из Instagram любую картинку или видео, достаточно лишь вставьте ссылку на нужный аккаунт;
  • @yabot — поисковик Яндекса.

Еще одна подборка помощников, задача которых — развлекать пользователя;

  • @BukToPuHa — знаменитая игра с тысячами участников: задания разного уровня сложности, соревнования с рейтингами;
  • @Hangbot — отгадайте слово (если знаете английский) и спасите себе жизнь;
  • @questgamebot — первый квест для Telegram, захватывающая история;
  • @baneksbot — топ популярных анекдотов, есть подписка на свежие шутки, а также рейтинги лучших анекдотов за определенный промежуток времени;
  • @slotobot — полная симуляция игрового автомата: виртуальные деньги, соревнования с друзьями;
  • @RadioBot — научит слушать радио прямо в мессенджере: выбираете станцию, часы вещания, скачиваете запись и слушаете.

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

Источник

Создание бота Telegram с использованием Python для генерации случайных котировок | Программа инженерного образования (EngEd)

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

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

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

Предварительные требования

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

Содержание

  1. Настройка профиля бота
  2. Кодирование бота
  3. Заключение

Настройка профиля бота

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

Щелкните значок поиска в Telegram, затем введите @botfather в строке поиска.

BotFather — официальный бот, созданный Telegram для облегчения создания ботов.

Создание отца бота в Telegram

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

Начало разговора с отцом бота

Введите / начните , чтобы начать.

Затем мы создаем бота, выполнив команду / newbot .

Создать бота

Затем мы вводим предпочитаемое имя и имя пользователя для бота.

Выбор имени бота

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

Кодирование бота

Мы начинаем с создания нового каталога и переходим в него.

Далее мы создаем виртуальную среду.

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

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

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

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

Далее нам нужно создать группу Telegram и добавить нашего бота в качестве участника.

Добавить участников в бота

Далее нам нужно получить идентификатор чата, мы можем сделать это, отправив эту команду в виде сообщения в группе Telegram:

После этого нам нужно открыть указанный ниже URL-адрес в нашем браузере, чтобы получить наш идентификатор чата:

  https://api.telegram.org/botBOT_TOKEN/getUpdates

BOT_TOKEN = токен, который мы скопировали ранее
  

Это возвращает ответ JSON, что-то вроде словаря Python, который содержит наш идентификатор чата.

JSON, содержащий идентификатор чата

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

  запросов на импорт
время импорта

# список цитат
цитаты = [
    «Во-первых, решите проблему. Затем напишите код. - Джон Джонсон ',
    «Опыт - это имя, которое каждый дает своим ошибкам. - Оскар Уальд',
    «Код - это как юмор. Когда приходится объяснять, это плохо. - Кори Хаус ',
    «Прежде чем программное обеспечение можно будет использовать повторно, оно должно быть пригодным для использования. - Ральф Джонсон »,
    «Оптимизм - это профессиональный риск программирования: обратная связь - это лечение.- Кент Бек
]

# перебираем кавычки
для цитаты в кавычках:
    url = 'https://api.telegram.org/bot1848805395:AAHaacRzz3vDJ8vrQqVZ4vMPTqY1OBOQ12Q/sendMessage?chat_id=CHAT_ID&text="{}"'.format (цитата)
    request.get (URL)
    # отправляет новые котировки каждые 20 секунд
    время сна (20)
  

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

Теперь давайте протестируем нашего бота, запустив наш файл Python в терминале:

Печать предложения каждые 20 секунд

Ура, работает!

Давайте сделаем нашего бота более интересным, подключившись к API, который снабжает нас случайными программными цитатами.

Мы будем использовать этот API и конечную точку / random для получения случайных котировок.

Затем нам нужно добавить следующие строки кода вверху нашего файла

  из telegram.ext import Updater, CommandHandler, MessageHandler, Filters
импортировать json
  

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

  telegram_bot_token = "ТОКЕН"

updater = Updater (токен = telegram_bot_token, use_context = True)
диспетчер = средство обновления.диспетчер

def random (обновление, контекст):
    # получить данные из API
    response = requests.get ('http://quotes.stormconsultancy.co.uk/random.json')
    data = response.json ()
    # Отправить сообщение
    context.bot.send_message (chat_id = update.effective_chat.id, text = data ['quote'])

# связывание команды / random с функцией random ()
quotes_handler = CommandHandler ('случайный', случайный)
dispatcher.add_handler (quotes_handler)
  

Теперь давайте запустим файл и введем / random в нашу группу Telegram.Наш бот должен ответить случайной цитатой.

Бот извлекает случайную цитату с помощью API

Заключение

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

С помощью бота Telegram вы все еще можете многого добиться, например, подключить своего бота к другим API и разместить их на платформе, такой как Heroku, чтобы ваш бот был доступен 24/7.

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

Вот несколько API, которые можно интегрировать со своим ботом Telegram:

  1. Случайные изображения собак
  2. Открыть погодную карту
  3. Конвертер валют
  4. Футбол
  5. Yahoo Finance

Удачного кодирования!


Вклад экспертной оценки: Srishilesh P S

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


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

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

Примечание : Это руководство требует:

Введение

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

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

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

Внешний вид сценария использования

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

Результат:

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

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

Подробнее о других типах правил:

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

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


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

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

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

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


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

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

При создании учетной записи вам необходимо создать бота.

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

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

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

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

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

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

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

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

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

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

  1. Ключ API бота — Вставьте сюда скопированный токен.
  2. Имя пользователя бота — Здесь вам нужно написать имя пользователя бота без @. В нашем примере это CmindsBot . Помните: имя пользователя — это имя без пробелов, оканчивающееся на бот :
  3. Имя отправителя по умолчанию — Если бот не может определить имя отправителя, он будет использовать это имя.

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

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

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

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

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

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

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

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

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

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

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

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

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

Примеры:

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

В этом случае мы будем рассматривать ответы бота в Telegram только пользователю, отправившему сообщение, содержащее слова или фразы из правила.Итак, перейдите к Admin Dashboard → CM Telegram Bot → Settings Personal Messages tab.

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

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

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

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

    В ответ вы получите ID группы:

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

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

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

Сводка условий ключевого слова

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

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

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

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

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

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

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

На каждой вкладке есть пустое правило.

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

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

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

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

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

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

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

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

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

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

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

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

Внешний вид сценария использования

Создайте бота Telegram без кода и получайте уведомления — NoCodeAPI

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

Достаточно сказано! А теперь давайте создадим бота для телеграмм через nocodeapi.

бонусных балла: — Telegram-боты быстрее, проще и проще, чем слабые боты. Я лично использую телеграмм-ботов для отслеживания простоев своего сайта.

Шаг 1. Получите токен бота

  • Найдите @botfather в телеграмме.
  • Нажмите и добавьте этот внизу телеграмм канала.
  • Отправьте команду / newbot , чтобы создать нового бота.
  • Дайте этому боту имя.
  • Дайте этому боту имя пользователя.

Бот ответит вам Ключом бота . Сохраните его, потому что он понадобится вам на шаге 3.

Шаг 2. Запустите своего бота

  • Найдите окно своего бота в сообщении с токеном @botfather. Это выглядит так: — t.me/your_username. И нажмите на нее.
  • Вы попадете в окно чата с ботом.
  • Нажмите / начать в нижней части окна чата с ботом.

Шаг 3. Создайте приложение на NoCodeAPI

  • Нажмите «Make Telegram Webhook API»
  • Дайте своему веб-перехватчику «имя»
  • Введите «токен доступа бота» , @botfather дал вам в телеграмме
  • Нажмите «Обновить раскрывающееся меню»
  • Выберите свой «ID чата»
  • Нажмите «Создать»

Шаг 4. Проверьте, работает ли он

  • Ваш веб-перехватчик указан на панели управления nocodeapi.
  • Нажмите «Открытая площадка»
  • Вы можете видеть URL-адреса для отправки текстового сообщения или объектного сообщения вашему боту
  • Отправьте тестовое сообщение, и оно должно появиться в вашем приложении Telegram.

Заключение 😀

Если сработало. Это хорошие новости. Но если вы столкнулись с какой-либо проблемой — свяжитесь с нами по телеграмме. Мы вас посадим.

Я использую веб-перехватчики Telegram для: —

  • Уведомление о сборке Netlify
  • Новая встреча забронирована на календарный
  • Новый пользователь Stripe
  • Веб-сайт не работает / запускается с помощью робота безотказной работы

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

Надеюсь, это помогло вам в создании вашего API. Если вы нашли это полезным, подпишитесь на наш канал в Twitter по адресу @nocodeapi. Спасибо за чтение. 👋

Как создать ботов Telegram с помощью Webhooks | Марс Эскобин

Для создания собственного бота Telegram требуется минимум кода. Фактически, вам даже не нужно устанавливать редактор кода, чтобы начать его создание. К концу этого поста вы узнали, как создать своего личного интерактивного бота для телеграмм с помощью простой таблицы Google.Конечным продуктом будет бот, который сможет отвечать на ваши сообщения. Примерно так:

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

Nota bene: этот пост является частью учебника из трех пунктов о ботах Telegram (вторая часть — , здесь , а третья часть все еще находится в духовке)

Есть два способа интеграции приложений друг с другом — через опрос и вебхуков .Когда вы делаете онлайн-покупку и получаете сообщение от приложения для кредитной карты, это интеграция приложения в действии. Когда вы переводите деньги из приложения и получаете SMS для своего OTP, это интеграция приложения в действии. Разработчики создают для своих приложений способ получения данных друг от друга, потому что (1) это довольно круто и (2) это то, чего хотят многие пользователи. По этой причине разработчики пишут инструкции о том, как их приложение может отправлять и получать данные из других приложений. Но, конечно, они не делают все свои данные доступными для выборки, они указывают, какой тип данных можно отправлять и что может делать их приложение, если и когда оно получает данные от другого приложения.Для Telegram эти инструкции написаны здесь.

Webhooks как рыболовные крючки

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

Подождите, а какие события?

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

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

  1. Входной проход — мы не можем просто так получить доступ к данным из другого приложения.Разработчикам нужен способ отследить, кто обращается к их приложениям с черного хода. Для этого они выдают уникальные ключи всем, кто хочет войти в свои приложения за пределами основного пользовательского интерфейса. Я покажу вам, как получить ключ в Telegram за минуту.
  2. Загрузочная док-станция — как только у нас есть доступ к другому приложению, мы можем начать извлекать из него данные. Но для этого нам нужна погрузочная площадка или место для приема этих данных. Наша загрузочная док-станция должна иметь форму URL-адреса веб-приложения.Приложение не может выгружать нам какие-либо данные, если у нас нет загрузочной док-станции. Из этой док-станции мы можем делать с данными все, что захотим. Мы можем проверять его, манипулировать им, отправлять в другое приложение или даже отправлять обратно в исходное приложение.

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

Теперь, когда у вас есть концептуальное представление о том, как работают веб-перехватчики, мы можем создать бота! Необходимо выполнить шесть шагов:

Шаг 1. Получите входной пропуск

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

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

  1. Найдите Botfather в Telegram. @ him at / @ botfather
  2. Передай привет Botfather (нужно отдать дань уважения)
  3. Отправь имя своего бота ему
  4. Бам! У вас есть токен авторизации 😃

Шаг 2: Настройте электронную таблицу Google

Когда у нас будет токен, откройте пустую таблицу Google и перейдите в Инструменты> Редактор скриптов. Здесь мы будем писать наш код.

Шаг 3. Создайте загрузочную док-станцию ​​(URL-адрес веб-приложения)

Нам нужен URL-адрес веб-приложения для получения данных из Telegram. К счастью, Google предоставляет очень простой способ публикации веб-приложений через редактор сценариев. Когда мы опубликуем скрипт, мы получим уникальный URL-адрес веб-приложения. Так что вперед и нажмите Опубликовать в редакторе скриптов Google Spreadsheet. Обратите внимание на раскрывающиеся варианты на изображении ниже. Каждый раз, когда вы публикуете свою работу, версия всегда должна быть установлена ​​как новая, ваш адрес электронной почты должен быть тем, который запускает приложение, а любой, даже анонимный , должен иметь к нему доступ.

И теперь у нас есть URL-адрес веб-приложения! 😃

Шаг 4. Сохраните все ссылки в переменных

Теперь, когда у нас есть входной проход и загрузочная док-станция, давайте создадим веб-перехватчик. Согласно документации Telegram Bot API, все запросы к их API ( A pp P rogramming I nterface) должны быть представлены в такой форме: https://api.telegram.org/bot/ METHOD_NAME Похоже, эта ссылка нам понадобится время от времени в нашем коде. Давайте продолжим и сохраним все необходимые нам ссылки в переменных, чтобы мы могли легко ссылаться на них позже:

Шаг 5: Настройте веб-перехватчик

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

Когда вы публикуете или развертываете свой код, вам может быть предложено авторизовать собственное приложение для доступа к вашим данным в Google:

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

Шаг 6: Настройка обмена сообщениями

Наш бот должен знать две вещи, прежде чем он сможет кому-то написать:

  1. Кому он будет отправлять сообщения? Нам нужно дать ему идентификатор чата.
  2. Что там написано? Нам нужно передать ему сообщение для отправки.

Запишем эти требования как параметры нашей функции. Не стесняйтесь скопировать и вставить этот код:

Шаг 7. Настройте запросы POST

По словам разработчиков Telegram, все запросы к их API должны обслуживаться через запрос HTTPS. Они также упомянули, что поддерживают только запросы GET и POST. Запрос GET означает, что кто-то пытается получить данные, а запрос POST означает, что кто-то пытается отправить данные.Это единственная концепция в этом руководстве, которую я еще не освоил, поэтому я перестану притворяться, что знаю, о чем говорю, и просто свяжу вас с этой статьей, которая помогла мне лучше ее понять.

Anywho, важно знать, что вы должны написать функцию, которая может отправлять POST-запрос в Telegram, чтобы вы могли отправлять сообщение каждый раз, когда человек разговаривает с вашим ботом. Не стесняйтесь копировать и вставлять этот код, и я вскоре объясню, что он делает:

Нам нужна эта функция, потому что (1) это наш способ отправки данных в Telegram и (2) сам Google требует своих пользователей скрипта приложений (нас) чтобы включить функцию doGet или doPost при публикации веб-приложения.Вот письменная документация по нему. В этом документе Google также объяснил, что означает аргумент ( e ) в функции. Он представляет данные, которые были созданы на основе события, созданного человеком, внутри приложения, к которому подключен наш веб-перехватчик. В нашем случае этот аргумент e будет содержать все данные, которые создаются всякий раз, когда человек отправляет сообщение нашему боту Telegram. И именно здесь мы получим идентификатор чата пользователя. Наконец, все ранее сплетни окупились 😃 .. (может быть?)

Итак, вот история нашего бота:

  1. Когда пользователь общается с нашим ботом Telegram, это событие.И это событие генерирует данные, представленные e.
  2. Наш веб-перехватчик автоматически отправляет e на URL-адрес веб-приложения.
  3. Как только e попадет на URL-адрес веб-приложения, веб-приложение захочет отправить запрос POST в Telegram. Он попросит Telegram отправить сообщение пользователю.
  4. Однако он не может отправить запрос с неполными требованиями. Нам нужен идентификатор чата человека, которому мы хотим, чтобы Telegram отправил сообщение, и сообщение, которое мы хотим отправить Telegram. Функция doPost переносит сообщение внутри переменной text .
  5. Функция doPost также имеет идентификатор чата , но сначала необходимо проанализировать e , чтобы найти эти данные.
  6. После обнаружения он теперь передает оба требования в Telegram с функцией sendMessage . И это вызовет отправку сообщения пользователю. Ву! Запрос выполнен. Теперь у вас есть рабочий бот:

Как создать бота Telegram с помощью Node.js и Sanity

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

Если вы защитник конфиденциальности, начинающий разработчик или просто любите болтать с друзьями, создание чат-ботов Telegram — отличный способ попрактиковаться в программировании и создать что-то классное. Платформа становится все более популярной, поэтому знание Telegram API — отличный навык!

Для начинающего строителя чат-ботов есть множество вариантов — Discord, Facebook, Slack… Так зачем нам Telegram?

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

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

Для начала воспользуемся Botfather, внутренним мастером ботов Telegram, чтобы инициализировать нашего бота и получить его ключи API.

Скачать рабочий стол Telegram. Посетите Botfather, чтобы сразу же открыть чат и начать создавать своего бота.

Запуск / start сообщает Botfather о загрузке и показывает вам все его доступные команды.

Как видите, доступно множество опций.

Мы запустим / newbot . Дайте вашему боту отображаемое имя, а затем имя пользователя, которое будет зарегистрировано в Telegram. Последнее должно заканчиваться словом «бот». Для этого урока я выбрал sanity_gc_memebot .

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

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

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

С его предварительно созданным шаблоном Node.js мы можем устанавливать пакеты Node, ничего не загружая на наш жесткий диск.Если вы хотите оставить Replit включенным на неопределенный срок, вам нужно будет приобрести их платный план, но как только вы напишете код, вы можете легко перенести его на бесплатный уровень на Heroku или аналогичной службе.

Если вы еще этого не сделали, создайте учетную запись Replit. Затем выберите «New Repl» на левой боковой панели и «Node.js» в раскрывающемся списке.

Вся мощь Node.js в локальной среде с 10% времени установки.

Теперь вы должны увидеть пустой файл index.js . Давай приступим к работе!

Возможно, вы немного подозрительны.«Я должен всегда держать свой ключ API в секрете. Ожидается ли, что я просто вставлю ключ в песочницу в браузере?» Хорошие инстинкты!

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

Щелкните значок замка на левой боковой панели, чтобы получить доступ к экрану переменных среды. Как только вы попадете туда, введите ключ TELEGRAM_BOT_KEY и вставьте значение, полученное от Botfather.

Теперь мы готовы инициализировать нашего бота.

В файле index.js напишите следующий код:

 


const TelegramBot = require ('node-telegram-bot-api');


константный токен = process.env.TELEGRAM_BOT_KEY;


const bot = новый TelegramBot (токен, {опрос: true});  

Нажмите большую зеленую кнопку «Выполнить» в верхней части окна «Replit». Вы должны увидеть, что автоматически произойдут две вещи: ваш пакет .json инициализируется, и устанавливается пакет node-telegram-bot-api на npm. Обычно обе эти вещи приходится делать вручную. Довольно мило!

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

Пакет узлов, с которым мы работаем, node-telegram-bot-api , поставляется с отличной документацией. Начнем с одного из методов из README. Мы скажем нашему боту, чтобы он отправлял введение каждый раз, когда пользователь запускает / start .

 





bot.onText (/ \ / start /, (msg) => {

bot.sendMessage (msg.chat.id,
«Привет, я новенький бот Telegram. Я живу в учебнике по здравомыслию»);
});  

Обязательно снова нажмите кнопку «Выполнить» в Replit, затем перейдите в Telegram и проверьте его. (Если у вас еще нет открытого диалога с вашим ботом, вернитесь в чат с Botfather и перейдите по URL-адресу, который он вам прислал. Он должен выглядеть как t.me/your_bot .)

Успех!

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

 


bot.on ('сообщение', (msg) => {
  console.log (сообщение);
bot.sendMessage (msg.chat.id, «Сообщение отправлено на консоль!»)
})  

Тестирование покажет нам, как выглядит объект сообщения в Telegram API.

Между тем, в Replit:

С правой стороны зарегистрирован наш объект msg .Это полезно для отладки, когда наш бот становится более сложным.

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

Давайте добавим в нашу студию схему мема.

В папке схем добавьте meme.js .

 

экспорт по умолчанию {
  имя: "мем",
  title: "Мем",
  тип: "документ",
  поля: [
    {
      name: "mainImage",
      title: "Основное изображение",
      тип: "изображение",
    },
    {
      name: "publishedAt",
      title: "Опубликовано в",
      тип: "datetime",
    },
    {
      имя: "автор",
      title: "Автор",
      тип: "строка",
    },
  ],
};  

Затем в схеме .js (также в каталоге схем), импортируйте файл meme.js и экспортируйте его вместе с информацией вашего блога.

 

импортировать мем из "./meme.js"


мем

  

Это было быстро, а? Теперь запустите sanity deploy и запустите нашу студию.

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

Это мощный ключ, поэтому не забывайте его хранить!

Во-первых, давайте зайдем на sanity.io/manage. Недавно он получил новый дизайн, так что попробуйте несколько хороших UI, если вы еще этого не сделали.

Найдите проект, который вы только что инициализировали, нажмите «Настройки» на верхней панели, затем «Настройки API» слева и прокрутите вниз до «Токены». Добавьте новый токен API с именем «Мой Telegram Bot» и дайте ему права «Редактор».

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

Новый пользовательский интерфейс Sanity Manage действительно хорош.

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

Тестирование клиента Sanity

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

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

Давайте сделаем это здесь. Сначала создайте новый файл в Replit с именем helpers.js .

Добавьте клиента Sanity в файл помощников и экспортируйте его.

 

const sanityClient = require ('@ здравомыслие / клиент')

const client = sanityClient ({
  projectId: 'your_project_id',
  набор данных: 'производство',

  apiVersion: '2021-04-05',
  токен: процесс.env.SANITY_WRITE_TOKEN,
  useCdn: ложь,
})

module.exports = {клиент}
  

Обратите внимание, что мы добавляем дату для нового обновления Content Lake API от Sanity.

Помните, что мы используем Replit и не нужно npm устанавливать клиент Sanity .

Давайте создадим новый документ «post» для тестирования клиента Sanity.

 


const {client} = require ('./ helpers')


bot.on ('сообщение', (msg) => {

  клиент.Создайте({
    _type: 'сообщение',
    заголовок: msg.text
    })

.then (res => bot.sendMessage (msg.chat.id, «Документ опубликован!»))
  .catch (ошибка => console.error (ошибка));
})  

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

Telegram подтвердит, что документ был опубликован … тогда мы должны увидеть его в нашей студии!

Сработало!

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

Это немного сложно. Нам нужно будет использовать Node для загрузки наших изображений из Telegram API, где мы будем хранить их во временной папке на нашем Replit. Затем мы можем взять изображение из этой папки и загрузить его в медиатеку Sanity. Как только изображение будет безопасно в облаке Sanity, мы будем ссылаться на его идентификатор при создании нового мем-документа.

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

Начнем с добавления вспомогательной функции для загрузки изображения из Telegram в наш Replit.

 

const fs = require ('fs')
const request = require ('запрос')
const sanityClient = require ('@ здравомыслие / клиент')

const client = sanityClient ({

})

const download = (url, path, callback) => {



  request.head (url, (err, res, body) => {
    запрос (URL)


      .pipe (fs.createWriteStream (путь))
      .on ('закрыть', обратный вызов)
  })
}

module.exports = {client, download}  

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

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

Прежде чем идти дальше, давайте создадим эту папку. Создайте temp / image.png в Replit. Вы можете создавать новые файлы и папки, используя значки в правом верхнем углу рисунка ниже.

Создайте файл image.png во временной папке. В нем будут храниться наши фотографии по пути к Sanity.

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

 



bot.on ('сообщение', (msg) => {
  
  const chatId = сообщение.chat.id;
  
  if (msg.photo) {
    bot.sendMessage (chatId, «Эй, это картинка»).
  }
  else {bot.sendMessage (chatId, "Если это не картинка, меня это не волнует.")}

})  

Попробуйте, прикрепив фото к своему сообщению.

Вау.

Поскольку NodeJS не поддерживает метод ES6 fetch , нам нужно добавить его самостоятельно. Мы также добавим модуль файловой системы Node, чтобы мы могли управлять файлами изображений в Replit.

 


const fetch = require ("узел-выборка");
const fs = require ('fs')
  

Заменить бота .on (...) код со следующим:

  bot.on ('message', (msg) => {
  
  const chatId = msg.chat.id;
  
  if (msg.photo) {
    bot.sendMessage (
chatId,
«Эй, это картинка. Я скачаю ее на Replit ...»)
    
    const imageID = msg.photo [0] .file_id;
    
    const imageSender =
принести(
`https://api.telegram.org/bot$ {token} / getFile? file_id = $ {imageID}`
)
      .then (res => res.json ())
      .then (data => {
        
        const filePath = data.result.file_path;
        
        const url =
`https://api.telegram.org/file/bot$ {token} / $ {filePath}`;
        
        const путь = `. / temp / image.png`
        
        скачать (url, path, () => {
          bot.sendMessage (chatId, '✅ Изображение загружено в Replit!')
        })
      })
  }
})  

А теперь попробуйте отправить фото боту в Telegram.

TYBG

Вернитесь в Replit и проверьте временную папку.

Впечатляет! Мы уже на полпути.

Хорошо, первая часть сделана. Теперь мы расскажем Replit, что делать с изображением в его папке temp . Клиент Sanity делает загрузку ресурсов относительно безболезненной, так что это проще, чем могло бы быть!

Добавьте этот код туда, где находится ваша вспомогательная функция загрузки.

 




скачать (url, path, () => {
          бот.sendMessage (chatId, '✅ Изображение загружено на Replit!');
          
          client.assets
          .загрузить изображение',
          
          fs.createReadStream (путь), {имя файла: `img - $ {imageID} .png`})
          .then ((документ) => {
          bot.sendMessage (chatId, 'Создание мем-документа ...', документ)
          
          const {_id} = документ;
          
          client.create ({
            _type: 'мем',
            mainImage: {
            актив: {
              _type: 'ссылка',
              
              _ref: _id,
              }
            },
            
            автор: `$ {msg.from.first_name} $ {msg.from.last_name} `,
            PublishedAt: новая дата (). toISOString ()
          })

          .then (res => bot.sendMessage (chatId, `✅ Документ опубликован в Sanity!
ID: $ {res._id} `))

          .catch (error => {
            bot.sendMessage (chatId, `❌ Ошибка загрузки, проверьте консоль .`);
            console.error (ошибка);
            })
        })
      .catch ((ошибка) => {
      bot.sendMessage (chatId, `❌ Ошибка загрузки, проверьте console.`);
      console.error ('Ошибка загрузки:', error.message)
      })
    })

  

В приведенном выше коде мы делаем две вещи с помощью Sanity. Сначала мы загружаем наш актив в медиатеку Sanity. Таким образом, когда пришло время создавать наш документ, нам нужно всего лишь сослаться на ID изображения в поле mainImage , и оно будет прикреплено к нашему новому мемовскому документу. Затем мы создаем мем, добавляя имя пользователя Telegram в качестве автора и текущую дату и время в качестве поля publishedAt .

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

Давайте попробуем!

Он появляется в Sanity?

«Обними обезьяну; отвергни человечество» — один из моих любимых современных мемов.

Отправляйтесь в свою студию Sanity и посмотрите, появилась ли она.

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

Да! С полями имени и даты. Красивый! Теперь мы можем экспортировать самые грязные мемы из нашего группового чата на самую передовую в мире платформу публикации.

Я поделился полным кодом этого бота на Replit. Просто переключите переключатель в левом верхнем углу с «Вывод» на «Код».

Чтобы использовать его, разветвите REPL и добавьте .env с вашими ключами API, затем добавьте свой идентификатор проекта Sanity в файл helpers.js .

Что вам делать дальше?

  • Естественно, вам понадобится передняя часть. Если вы собираетесь обновлять свой блог с помощью последних мемов дня, вам потребуется быстрое время сборки. Может быть, рассмотрим Гюго?
  • Я оставил вам код, который можно немного очистить.Попробуйте запустить / start в готовом боте. Смотрите, что происходит? Как сделать так, чтобы сообщение «… Меня не волнует» не отображалось при выдаче команды запуска? Может быть, условное выражение в сочетании с регулярным выражением?
  • Как вы называете этого бота, когда вы на самом деле болтаете в группе? Вы можете добавить «@your_bot» в свою группу Telegram, но как заставить его получать текстовые сообщения? На данный момент вам нужно написать своему боту DM, но, возможно, вы сможете придумать, как поговорить с ним «публично».

Поздравляем! Мне было очень весело, и я надеюсь, что ты тоже.Если у вас есть вопросы, отзывы или вы просто хотите похвастаться тем, что вы сделали, обращайтесь в Twitter.

Как создать Telegram-бота с помощью Node.js менее чем за 3 минуты | от Луи Петрика

Это, наверное, проще, чем вы думаете

Источник: автор

Telegram — альтернатива WhatsApp, на мой взгляд, довольно хорошая. Это бесплатное использование считается очень безопасным. Но самое лучшее:
Мы можем запрограммировать собственных ботов!

Вот как его создать с помощью Node.js.
Давайте выпустим и создадим нашего собственного бота Telegram!

Начало работы

Во-первых, нам нужно зарегистрировать нашего бота.Мы можем сделать это в приложении Telegram, связавшись с BotFather .

Просто введите «botfather» в поле поиска и выберите вариант с синей галочкой.

Источник: автор

Просто нажмите «старт» в чате и просмотрите варианты. Вам нужно только выбрать имя и логин — тогда вы можете сохранить ключ. Пожалуйста, держите это в секрете.

Вы уже можете найти своего бота в поиске Telegram. Ищите
«@ » — но, конечно, бот пока ничего не может.

Приступим к кодированию. Я использую пакет NPM для работы с Telegram API. Просто установите его с помощью:

 yarn add node-telegram-bot-api 

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

Готово! Теперь мы можем начать что-то делать с ботом. Вот простой пример.

С помощью onText мы можем реагировать на сообщения, соответствующие шаблону регулярного выражения. В этом примере выражение / \ / echo (. +) / говорит, что мы должны написать «/ echo» и некоторый текст за ним.

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

bot.sendMessage используется для отправки сообщения (какой сюрприз!). resp — это строка, отправляемая после команды echo.
Да, бот отправляет обратно то, что мы ему отправили.
Запустите узел app.js , откройте чат с ботом и отправьте что-то вроде этого:

Источник: автор

Отправка сообщений автоматически

Как я уже сказал, нам нужно использовать chatId для отправки сообщений пользователям — для что; нам нужно где-то его хранить.В производственном приложении, конечно, вы должны выбрать для этого энергонезависимое хранилище — MySQL, MongoDB или другую базу данных.

В нашем примере я храню идентификаторы в массиве. Пользователь может зарегистрироваться в боте с помощью «/ register» — тогда боту будет разрешено отправлять ему сообщения. Бот отправляет сообщение каждому пользователю один раз в секунду — мы просто просматриваем массив пользователей с помощью цикла for.

Как только мы отправляем боту «/ register», мы получаем спам с сообщениями.

Реагировать на все сообщения i

С помощью бота .onText мы смогли реагировать на сообщения о соответствии регулярным выражениям. Но что, если мы хотим обрабатывать все входящие сообщения? Это возможно с помощью bot.on ("message") — он запускается всякий раз, когда кто-то отправляет сообщение.

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

Отправка опросов

В Telegram мы можем многое обменять. Не только стикеры, видео и текстовые сообщения, но и опросы. Создать его очень просто:

 бот.sendPoll (chatId, «Telegram отличный?», [«Конечно», «Конечно»]) 

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

Вот как легко создать бота Telegram с Node.js!

Спасибо за прочтение. Хотели бы вы увидеть в будущем более сложный проект? Тогда не стесняйтесь оставлять мне свое мнение.

Создание приватного чат-бота в Telegram

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

Не совсем приватный бот

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

Обновление 11.07.2021

Некоторые очень хорошие люди, которые недавно прочитали мой пост, указали, что создание группы для сохранения конфиденциальности не является необходимым, и достаточно просто использовать chat_id . Спасибо @ Jerry, @ Terry и @J за их отзывы и пояснения из раздела комментариев. Я не изменял остальную часть сообщения и, пожалуйста, ознакомьтесь с их комментариями ниже, если вы не хотите создавать группу.Спасибо ребята.

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

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

  1. Откройте сеанс с BotFather.
  2. Введите / newbot .
  3. Введите имя бота. Пример бота для блога
  4. Введите имя пользователя для бота. он должен заканчиваться ботом . example_blog_bot

Я, [25.03.20 16:02] / newbot

BotFather, [25.03.20 16:02] Хорошо, новый бот. Как мы это назовем? Выберите имя для> своего бота.

Я, [25.03.20 16:03] Пример бота для блога

BotFather, [25.03.20 16:03] Хороший. Теперь давайте выберем имя пользователя для вашего бота. Он должен заканчиваться ботом . Как> это, например: TetrisBot или tetris_bot.

Я, [25.03.20 16:03] example_blog_bot

BotFather, [25.03.20 16:03] Выполнено! Поздравляю с приобретением нового бота.Вы найдете его на t.me/> example_blog_bot. Теперь вы можете добавить описание, раздел и профиль> изображение для вашего бота, см. / Help для получения списка команд. Между прочим, когда> вы закончите создавать своего крутого бота, свяжитесь с нашей службой поддержки ботов, если вам нужно> лучшее имя пользователя для него. Просто убедитесь, что бот полностью работает, прежде чем> вы это сделаете.

Используйте этот токен для доступа к HTTP API: 1101361374: AAHS_DYrAUohT-HQXVKKz-M1howAxvXdRLA Держите свой токен в безопасности и храните его в надежном месте, он может быть использован кем угодно для> управления вашим ботом.

Описание Bot API см. На этой странице: https://core.telegram.org/> bots / api

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

Бот был удален, поэтому вся конфиденциальная информация не имеет значения.

Создайте группу со своим ботом

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

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

Отключить присоединение к группам

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

  1. Откройте сеанс с BotFather.
  2. Введите / setjoingroups .
  3. Введите имя бота. @example_blog_bot .
  4. Ввести Отключить

Я, [25.03.20 16:13] / setjoingroups

BotFather, [25.03.20 16:13] Выберите бота, чтобы изменить настройки членства в группе.

Я, [25.03.20 16:13] @example_blog_bot

BotFather, [25.03.20 16:13] «Включить» — бота можно добавлять в группы. «Отключить» — заблокировать приглашения в группы, бота нельзя добавить в группы. Текущий статус: ВКЛЮЧЕН

Я, [25.03.20 16:13] Отключить

BotFather, [25.03.20 16:13] Успех! Новый статус: ОТКЛЮЧЕН. / help

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

Взаимодействие с ботом

В Telegram Bot API описан API Telegram. Для взаимодействия с этим ботом нам понадобится API-токен 1101361374: AAHS_DYrAUohT-HQXVKKz-M1howAxvXdRLA , который нам предоставил BotFather. Общий шаблон uri — https: //api.telegram.org / bot <токен> / METHOD_NAME . Обратите внимание на , что токен следует за словом bot в URL-адресе.

Например, метод getMe предоставит информацию о боте. Просто выполните GET с этим URL https://api.telegram.org/bot1101361374:AAHS_DYrAUohT-HQXVKKz-M1howAxvXdRLA/getMe .

  {
   "ок": правда,
   "результат":{
      "id": 1101361374,
      "is_bot": правда,
      "first_name": "Пример бота для блога",
      "username": "example_blog_bot",
      "can_join_groups": ложь,
      "can_read_all_group_messages": ложь,
      "supports_inline_queries": false
   }
}
  

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

Для его извлечения используйте метод getUpdates . Выполните GET с этим URL https://api.telegram.org/bot1101361374:AAHS_DYrAUohT-HQXVKKz-M1howAxvXdRLA/getUpdates . Если результат пустой, просто напишите что-нибудь боту в этой группе.

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

  {
   "ок": правда,
   "результат":[
      {
         update_id: 726362299,
         "сообщение":{
            "message_id": 3,
            "из":{
               "id": 877419474,
               "is_bot": ложь,
               "first_name": "Алекс",
               "last_name": "Сарафский"
            },
            "чат":{
               "id": - 475387861,
               "title": "Пример блогового бота",
               "тип": "группа",
               "all_members_are_administrators": истина
            },
            «дата»: 1585150611,
            "текст": "Привет"
         }
      }
   ]
}
  

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

Из JSON chat_id — это -475387861 . Мы можем использовать это для отправки сообщения с помощью метода sendMessage .

sendMethod намного сложнее, но для целей этой демонстрации будет достаточно простого GET с простым сообщением, например, этого URL https://api.telegram.org/bot1101361374:AAHS_DYrAUohT-HQXVKKz-M1howAxvXdRLA/ sendMessage? chat_id = -475387861 & text = Hello .

  {
   "ок": правда,
   "результат":{
      "message_id": 4,
      "из":{
         "id": 1101361374,
         "is_bot": правда,
         "first_name": "Пример бота для блога",
         "имя пользователя": "example_blog_bot"
      },
      "чат":{
         "id": - 475387861,
         "title": "Пример блогового бота",
         "тип": "группа",
         "all_members_are_administrators": истина
      },
      «дата»: 1585151160,
      "текст": "Привет"
   }
}
  

А это произошло в группе с ботом

Я, [25.03.20 16:36] Привет

Пример бота для блога, [25.03.20 16:46] Привет

Настройка конфиденциальности

Чтобы включить шифрование связи с ботом, необходимо включить функцию конфиденциальности.

  1. Откройте сеанс с BotFather.
  2. Введите / setprivacy .
  3. Введите имя бота. @example_blog_bot . Обратите внимание на , что требуется @ .
  4. Введите Включить

Я, [25.03.20 16:09] / setprivacy

BotFather, [25.03.20 16:09] Выберите бота, чтобы изменить настройки групповых сообщений.

Я, [25.03.20 16:09] @example_blog_bot

BotFather, [25.03.20 16:09] «Включить» — ваш бот будет получать только сообщения, которые начинаются с символа «/»> или упоминают бота по имени пользователя. «Отключить» — ваш бот будет получать все сообщения, которые люди отправляют группам. Текущий статус: ВКЛЮЧЕН

Я, [25.