Перейти к публикации

В ближайшее время постараюсь разобраться с картой сервера/ЛК/бб кодами

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

HeroBrine1st

Telegram Interface

Рекомендованные сообщения

Установка

 

pastebin get c1v8T9CK /lib/Telegram.lua; pastebin get 4Lh9ALEY /lib/Promise.lua;pastebin get ji28sbxU /lib/JSON.lua

 

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

Здесь все подробно обьясняют: https://tlgrm.ru/docs/bots#botfather.

 

Документация

 

Эта библиотека возвращает одну-единственную функцию - Telegram (в либе названа Bot, но будет телеграмом)

  • Telegram(token: string) - создает обьект бота. Использует псевдо-ООП.
    • Bot.API - таблица с единственным полем
      • rawRequest(method: string, options: table): table - сырой запрос без оболочек.
      • Имеет метатаблицу. Bot.API[method](options) - возвращает промис.
        • Promise:next(onFulfilled:function) - установить функцию, принимающая значение result при успешном выполнении промиса.
        • Promise:catch(onRejected:function) - установить функцию, принимающая значение error при ошибке промиса.
        • Promise:await() - ждет завершения промиса и возвращает результат с учетом всех его обработчиков.
    • Bot.longpoll
      • on(event: string,callback: function) - установить обработчик ивента. Весь список - message, edited_message, channel_post, edited_channel_post, inline_query, chosen_inline_result, callback_query, shipping_query, pre_checkout_query
      • start() - запустить лонгполл. Программа блокируется.
      • stop() - остановить.

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

P.s. если у вас тоже выбивает ошибку на 30й строке - напишите. component.internet.request тупо льет nil вместо ошибки, я пока полагаю, что это связано с блокировками.

Изменено пользователем HeroBrine1st
  • Like 5

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А если сервера Telegram окажутся недоступны?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А если сервера Telegram окажутся недоступны?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Согласно документации, если я вызову метод getUpdates с параметром offset, все обновления, меньшие или равные этому ID будут засчитаны как обработанные.

 

То есть API сервер сам сохраняет то, что я обработал обновление. Со стороны бота ничего сохранять в файл не нужно.

Однако есть одно но: при команде типа /reboot и последующей перезагрузке бот может зациклить перезагрузку. Решение - перед выключением или перезагрузкой надо еще раз получить обновления.

 

И да, лимит обновлений - 100 единиц. При получении нового обновления самое первое удаляется (если выходит за лимит). Если обновлению уже исполнился 1 день, оно автоматически удаляется.

Изменено пользователем HeroBrine1st

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Гость kovirolik

Спасибо)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Обновил библиотеку. Появился longpoll и запросы к API теперь асинхронные.

Однако вылетает ошибка, скорее всего из-за блокировок (тем не менее, телеграм без прокси у меня работает прекрасно). Если у вас даже с впн выпадает ошибка - напишите.

+ появилась поддержка веб-прокси, надо раскомментировать 7ю строку и вставить url, + переписать функцию encode (ради одной функции тащить web.lua от ECS не очень хотелось), если сайт использует другой вариант кодирования URL.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, HeroBrine1st сказал:

тем не менее, телеграм без прокси у меня работает прекрасно

 

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

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

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Totoro сказал:

получает списки новых проксей

Неплохо бы найти способ так же делать в либе

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×