Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 4 из 4
  1. #1
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±

    dc_crashreport: Как создать и настроить Telegram-бота

    Всем привет!

    В версии 1.2.0 инклуда dc_crashreport появилась возможность отправлять отчёты об ошибках в мессенджер Telegram.
      Открыть/закрыть


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

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

    Приступим.

    1. Чтобы создать бота в Telegram, нам нужно обратиться к боту @BotFather.
    Для этого откройте меню "Контакты", нажмите значок поиска, введите "@BotFather" и выберите вышеупомянутого бота (показано на скриншоте).
      Открыть/закрыть


    2. Откроется приветственная страница с описанием всего того, что можно сделать через @BotFather (правда, у меня на русском только заголовок, а всё остальное на инглише - интересно, это баг или фича?) - просто нажмите "Старт", чтобы начать работу с ботом.
      Открыть/закрыть


    3. Бот выдаст сообщение, в котором перечислены все команды. Нас интересует команда "/newbot", просто нажмите на неё в сообщении (обведено на скриншоте).
      Открыть/закрыть


    4. @BotFather спросит вас, как назвать нового бота (какое имя будет отображаться в списке контактов; для примера я указал "CrashReport"), а также глобальное имя (т.е. под каким хендлом бота можно будет найти). Учтите, что выбранное глобальное имя может быть уже занято - в этом случае придумайте более уникальное, специфическое имя. Кроме того, глобальное имя должно заканчиваться на "bot", например: "my_new_awesome_bot" или "MyNewAwesomeBot".
      Открыть/закрыть


    5. Бот создан! @BotFather выдаст сообщение, в котором есть адрес бота, по которому его можно найти и добавить в контакты, а также токен (последовательность из случайных букв, цифр и знаков) для авторизации и управления ботом.
    Пока что нас интересует сам бот. Найдите в сообщении ссылку на бота (обведено на скриншоте) и нажмите её.
      Открыть/закрыть


    6. Откроется чат с новым ботом - просто нажмите кнопку "Старт", чтобы начать беседу с ботом (этим вы разрешите боту отправлять вам сообщения).
      Открыть/закрыть


    7. Теперь вернитесь к последнему сообщению от @BotFather и обратите внимание на токен (обведён на скриншоте) - сейчас он нам пригодится.
    Откройте на своём ПК блокнот (или что вы там используете вместо него) и перепечатайте токен с экрана мобильного девайса. Либо, если вы используете версию Telegram для ПК, то можете просто скопировать-вставить токен из сообщения.
      Открыть/закрыть


    8. Чтобы заставить бота отправить сообщение, нужно знать ID чата между вами и ботом - узнаем же его! Откройте в браузере страницу:
    Код:
    https://api.telegram.org/bot<токен>/getUpdates
    где "<токен>" - это та длинная последовательность из букв и цифр, которую вы скопировали на предыдущем шаге.
    Если всё сделано правильно, то должна открыться страница с JSON-объектом. Не нужно особо вдумываться в её содержимое, вам понадобится только значение "result => 0 => message => chat => id" (обведено на скриншоте) - это и есть интересующий нас ID чата. Вернитесь к блокноту и запишите этот ID рядом с токеном.
      Открыть/закрыть

    Если вместо этого вы получили практически пустой объект с первым значением "ok: false" - проверьте ещё раз токен (возможно, вы неправильно переписали его), а также сам адрес страницы на предмет ошибок (одна из самых частых: забыли написать "bot" перед токеном).

    9. С ботом разобрались, теперь настроим сервер SA-MP.
    Взаимодействие с ботом производится путём отправки HTTPS-запросов, обычный HTTP в Telegram не поддерживается. Поскольку сервер умеет "из коробки" работать только с "голым" HTTP, для HTTPS нам понадобится плагин. Пока что единственным известным мне плагином для таких целей является pawn-requests.
    Зайдите на страницу релизов плагина, скачайте архив с самим плагином и инклудами к нему (обведено на скриншоте) и раскидайте содержимое архива по нужным папкам: плагин (*.dll/*.so) - в "plugins", а инклуды (да, именно во множественном числе; почему-то автор решил сделать для плагина целых 4 файла "*.inc", и нам понадобятся все) - в "pawno/include".
      Открыть/закрыть


    10. Почти готово. Остаётся только подключить dc_crashreport к вашему моду и заставить его работать с Telegram.
    Для этого достаточно лишь прописать несколько строк в начале мода, как на скриншоте, указав полученные вами токен бота и ID чата.
    Для ленивых я приготовил простой пример скрипта, в котором демонстрируется ошибка использования sscanf2 - просто вставьте свои ID чата и токен:
      Открыть/закрыть
    1. #include <a_samp>
    2. #include "sscanf2.inc"
    3.  
    4. #pragma option -d2 // Включим отладочную информацию, чтобы выводить номера строк в файлах
    5. #define DC_CRASHREPORT_EXTRA_SSCANF2 // Включить перехват сообщений об ошибках от sscanf2
    6.  
    7. #define DC_CRASHREPORT_TELEGRAM // Включить отправку отчётов через Telegram
    8. #define DC_CRASHREPORT_TELEGRAM_TOKEN "<токен>" // Токен бота
    9. #define DC_CRASHREPORT_TELEGRAM_SENDTO "<ID чата>" // ID чата между Вами и ботом
    10.  
    11. #include "dc_crashreport.inc"
    12.  
    13. stock TestFunc()
    14. {
    15. static const params[] = "12 abc";
    16. new buffer[4];
    17. new x;
    18. // Здесь должна быть ошибка, т.к. для спецификатора "s" не указана длина
    19. sscanf(params, "is", x, buffer);
    20. }
    21.  
    22. main()
    23. {
    24. TestFunc();
    25. }



    11. Компилируем скрипт, запускаем сервер и наблюдаем магию!
      Открыть/закрыть



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

    Удачной охоты за ошибками!


    Специально для Pro-Pawn.ru
    Копирование данной статьи на других ресурсах без разрешения автора запрещено!
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  2. 5 пользователя(ей) сказали cпасибо:
    DeimoS (13.12.2022) Kovshevoy (05.12.2022) Leogin (08.12.2022) punkochel (06.12.2022) Seregamil (01.06.2023)
  3. #2
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

  4. #3
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от $continue$ Посмотреть сообщение
    Есть, но его автор не додумался сделать нормальную лицензию, не накладывающую неадекватных обязательств на пользователя. (GPL? Нет, спасибо.)
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  5. #4
    Аватар для Leogin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    07.06.2022
    Сообщений
    13
    Репутация:
    1 ±
    Годно

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •