Гайд [Lua] Отправка причины краша скрипта в ТГ.

CoderKolaNedo

Участник
Автор темы
27
3
В этой теме я расскажу как отправить сообщение краша скрипта в телеграмм канал для фикса бага.​

Получение данных.​

1. Узнайте токен бота, если нету то создайте бота и получите его токен в @BotFather.
2. Узнайте ваш уникальный чат айди в @userinfobot.
3. Вставьте полученные данные в нужные переменные.​

Код для отправки сообщений.​

Для отправки сообщений вам нужны socket.http, socket.url encoding.
Будьте аккуратнее с токеном. Если он попадет в @ManyBot то бот будет работать баганно. И вам нужно пересоздать токен.
[!!] Данный код может работать только в SA:MP и его нужно зашифровать. [!!]
Вот код:​
Lua:
local nick = sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(playerPed)))
local telegramBotToken = ""
local chatId = ""

require('encoding').default = ('CP1251')
local u8 = require('encoding').UTF8
local url = require("socket.url")
local http = require("socket.http")

function onSystemMessage(msg, type, scr)
    if scr == thisScript() and type == 3 then
        if msg == "Script died due to an error." then
            return
        else
            sampShowDialog(252,'Что-то пошло не так','{FFFFFF}Произошла непредусмотренная ошибка в скрипте {00BFFF}'..thisScript().filename..'{FFFFFF}.\nЕсли данная ошибка повторяется то скрипт отправит ошибку создателю сам, для дальнейшего фикса.\nКод ошибки: \n'..msg,'Закрыть',_,0)
            local escapedMessage = url.escape(u8:encode(msg))
            local url = 'https://api.telegram.org/bot'..telegramBotToken..'/sendMessage?chat_id='..chatId..'&text=Ошибка от '..nick..': '..escapedMessage
            local fixurl = u8:encode(url)
            http.request(fixurl)
        end
    end
end
Результат который будет в телеграмм!
(( Это пример как будет выводиться в телеграмм ошибка ))​
Код:
Ошибка от Volodya_Svechikov: .../Android/data/com.arizona.game/monetloader/AS-Helper.lua:270: attempt to index global 'results' (a nil value)
stack traceback:
 .../Android/data/com.arizona.game/monetloader/AS-Helper.lua:270: in function '_draw'
 ./lib/mimgui/init.lua:100: in function <./lib/mimgui/init.lua:84>
 

mhertz

Известный
147
303
В этой теме я расскажу как отправить сообщение краша скрипта в телеграмм канал для фикса бага.

Получение данных.​

1. Узнайте токен бота, если нету то создайте бота и получите его токен в @BotFather.
2. Узнайте ваш уникальный чат айди в @userinfobot.
3. Вставьте полученные данные в нужные переменные.

Код для отправки сообщений.​

Для отправки сообщений вам нужны socket.http, socket.url encoding.
Будьте аккуратнее с токеном. Если он попадет в @ManyBot то бот будет работать баганно. И вам нужно пересоздать токен.
[!!] Данный код может работать только в SA:MP и его нужно зашифровать. [!!]
Вот код:
Lua:
local nick = sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(playerPed)))
local telegramBotToken = ""
local chatId = ""

require('encoding').default = ('CP1251')
local u8 = require('encoding').UTF8
local url = require("socket.url")
local http = require("socket.http")

function onSystemMessage(msg, type, scr)
    if scr == thisScript() and type == 3 then
        if msg == "Script died due to an error." then
            return
        else
            sampShowDialog(252,'Что-то пошло не так','{FFFFFF}Произошла непредусмотренная ошибка в скрипте {00BFFF}'..thisScript().filename..'{FFFFFF}.\nЕсли данная ошибка повторяется то скрипт отправит ошибку создателю сам, для дальнейшего фикса.\nКод ошибки: \n'..msg,'Закрыть',_,0)
            local escapedMessage = url.escape(u8:encode(msg))
            local url = 'https://api.telegram.org/bot'..telegramBotToken..'/sendMessage?chat_id='..chatId..'&text=Ошибка от '..nick..': '..escapedMessage
            local fixurl = u8:encode(url)
            http.request(fixurl)
        end
    end
end
Результат который будет в телеграмм!
(( Это пример как будет выводиться в телеграмм ошибка ))
Код:
Ошибка от Volodya_Svechikov: .../Android/data/com.arizona.game/monetloader/AS-Helper.lua:270: attempt to index global 'results' (a nil value)
stack traceback:
 .../Android/data/com.arizona.game/monetloader/AS-Helper.lua:270: in function '_draw'
 ./lib/mimgui/init.lua:100: in function <./lib/mimgui/init.lua:84>
а потом кто-то изменит функцию request в socket/http.lua чтобы она выводила ссылку условно в лог, и твой токен окажется в ручках любого дошколёнка, а дальше, если ты ему не нравишься он может написать в бота со своего аккаунта, накидать от бота цп, зарепортить бота, ну а телеграм снесёт твой аккаунт, так как ты его создатель)
а ещё у тебя эта функция криво на пк муне работать будет, на нём в Script died due to an error в конце ещё выводится hex число (что это? адрес объекта скрипта?), тебе нужно проверять, что сообщение начинается, а не равно
 

CoderKolaNedo

Участник
Автор темы
27
3
а потом кто-то изменит функцию request в socket/http.lua чтобы она выводила ссылку условно в лог, и твой токен окажется в ручках любого дошколёнка, а дальше, если ты ему не нравишься он может написать в бота со своего аккаунта, накидать от бота цп, зарепортить бота, ну а телеграм снесёт твой аккаунт, так как ты его создатель)
а ещё у тебя эта функция криво на пк муне работать будет, на нём в Script died due to an error в конце ещё выводится hex число (что это? адрес объекта скрипта?), тебе нужно проверять, что сообщение начинается, а не равно
MonetLoader, Ну смотри. За кражу я любого дошколёнка могу привлечь. И как он напишет бота? Это сложный процесс.
 
  • Ха-ха
Реакции: paulohardy

mhertz

Известный
147
303
MonetLoader, Ну смотри. За кражу я любого дошколёнка могу привлечь. И как он напишет бота? Это сложный процесс.
только ты не узнаешь что это за дошколёнок, ведь ему достаточно спиздить токен, скачать кастом клиент телеграмма и в нём из под бота зайти
 

CoderKolaNedo

Участник
Автор темы
27
3
только ты не узнаешь что это за дошколёнок, ведь ему достаточно спиздить токен, скачать кастом клиент телеграмма и в нём из под бота зайти
А как этот дошколёнок в тихую зайдет в телеграмм без звонка, и на телефоне где стоит родительский контроль. И его родаки узнают либо через сообщение в телеграмме, либо через проверку телефона.
 

paulohardy

вы еще постите говно? тогда я иду к вам
Всефорумный модератор
1,907
1,281
А как этот дошколёнок в тихую зайдет в телеграмм без звонка, и на телефоне где стоит родительский контроль
ты предлагаешь в открытом виде токен хранить, не будет ни звонка, ни родительского контроля
 

CoderKolaNedo

Участник
Автор темы
27
3
ты предлагаешь в открытом виде токен хранить, не будет ни звонка, ни родительского контроля
Ну вряд ли, через ссылку можно сделать такое. И сообщество BlastHack поумнее этих школьников. И не будет специально полезную функцию взламывать.
[!!] Данный код может работать только в SA:MP и его нужно зашифровать. [!!]
 

mhertz

Известный
147
303
Ну вряд ли, через ссылку можно сделать такое. И сообщество BlastHack поумнее этих школьников. И не будет специально полезную функцию взламывать.
как будто тут дошколят нету, и твой супер шифр не спасёт от обычной подмены либы
и да, токен == ссылка