Уведомление в телеграмм

bileneret

Новичок
Автор темы
6
0
Версия MoonLoader
.026-beta
Доброго времени.
Нашел на форуме уже подобную тему к моему вопросу: https://www.blast.hk/threads/104680/
В последнем сообщении в данной теме человек уже опубликовал внешне удовлетворяющий код, но он не сработал при пейдее.
Токен бота и ид чата доставать я умею - ввёл в коде.

Сообщение из той темы, дабы не искать:

Код:
local settings = {
    token = '', -- токен бота
    chat_id = 1 -- твой телеграм id
}

local message = ''
local parse = false

local ansi_decode = {
    [128]='\208\130',[129]='\208\131',[130]='\226\128\154',[131]='\209\147',[132]='\226\128\158',[133]='\226\128\166',
    [134]='\226\128\160',[135]='\226\128\161',[136]='\226\130\172',[137]='\226\128\176',[138]='\208\137',[139]='\226\128\185',
    [140]='\208\138',[141]='\208\140',[142]='\208\139',[143]='\208\143',[144]='\209\146',[145]='\226\128\152',
    [146]='\226\128\153',[147]='\226\128\156',[148]='\226\128\157',[149]='\226\128\162',[150]='\226\128\147',[151]='\226\128\148',
    [152]='\194\152',[153]='\226\132\162',[154]='\209\153',[155]='\226\128\186',[156]='\209\154',[157]='\209\156',
    [158]='\209\155',[159]='\209\159',[160]='\194\160',[161]='\209\142',[162]='\209\158',[163]='\208\136',
    [164]='\194\164',[165]='\210\144',[166]='\194\166',[167]='\194\167',[168]='\208\129',[169]='\194\169',
    [170]='\208\132',[171]='\194\171',[172]='\194\172',[173]='\194\173',[174]='\194\174',[175]='\208\135',
    [176]='\194\176',[177]='\194\177',[178]='\208\134',[179]='\209\150',[180]='\210\145',[181]='\194\181',
    [182]='\194\182',[183]='\194\183',[184]='\209\145',[185]='\226\132\150',[186]='\209\148',[187]='\194\187',
    [188]='\209\152',[189]='\208\133',[190]='\209\149',[191]='\209\151'
}

function AnsiToUtf8(s)
    local r, b = ''
    for i = 1, s and s:len() or 0 do
        b = s:byte(i)
        if b < 128 then
            r = r..string.char(b)
        else
            if b > 239 then
                r = r..'\209'..string.char(b - 112)
            elseif b > 191 then
                r = r..'\208'..string.char(b - 48)
            elseif ansi_decode[b] then
                r = r..ansi_decode[b]
            else
                r = r..'_'
            end
        end
    end
    return r
end

function sendTelegramMessage(text)
    openUrl(('https://api.telegram.org/bot%s/sendMessage?chat_id=%d&text=%s'):format(settings.token, settings.chat_id, AnsiToUtf8(text)))
end

function onServerMessage(text)
    if text == '__________Банковский чек__________' then
        parse = true
        message = text
    elseif text == '__________________________________' then
        parse = false
        sendTelegramMessage(message)
        message = ''
    elseif parse then           
        message = ('%s\n%s'):format(message, text)
    end
end
Могли бы объяснить НЕработу скрипта и объяснить, как его починить?
Заранее спасибо)
 
  • Злость
Реакции: qdIbp

Sadow

Известный
1,428
593
Доброго времени.
Нашел на форуме уже подобную тему к моему вопросу: https://www.blast.hk/threads/104680/
В последнем сообщении в данной теме человек уже опубликовал внешне удовлетворяющий код, но он не сработал при пейдее.
Токен бота и ид чата доставать я умею - ввёл в коде.

Сообщение из той темы, дабы не искать:

Код:
local settings = {
    token = '', -- токен бота
    chat_id = 1 -- твой телеграм id
}

local message = ''
local parse = false

local ansi_decode = {
    [128]='\208\130',[129]='\208\131',[130]='\226\128\154',[131]='\209\147',[132]='\226\128\158',[133]='\226\128\166',
    [134]='\226\128\160',[135]='\226\128\161',[136]='\226\130\172',[137]='\226\128\176',[138]='\208\137',[139]='\226\128\185',
    [140]='\208\138',[141]='\208\140',[142]='\208\139',[143]='\208\143',[144]='\209\146',[145]='\226\128\152',
    [146]='\226\128\153',[147]='\226\128\156',[148]='\226\128\157',[149]='\226\128\162',[150]='\226\128\147',[151]='\226\128\148',
    [152]='\194\152',[153]='\226\132\162',[154]='\209\153',[155]='\226\128\186',[156]='\209\154',[157]='\209\156',
    [158]='\209\155',[159]='\209\159',[160]='\194\160',[161]='\209\142',[162]='\209\158',[163]='\208\136',
    [164]='\194\164',[165]='\210\144',[166]='\194\166',[167]='\194\167',[168]='\208\129',[169]='\194\169',
    [170]='\208\132',[171]='\194\171',[172]='\194\172',[173]='\194\173',[174]='\194\174',[175]='\208\135',
    [176]='\194\176',[177]='\194\177',[178]='\208\134',[179]='\209\150',[180]='\210\145',[181]='\194\181',
    [182]='\194\182',[183]='\194\183',[184]='\209\145',[185]='\226\132\150',[186]='\209\148',[187]='\194\187',
    [188]='\209\152',[189]='\208\133',[190]='\209\149',[191]='\209\151'
}

function AnsiToUtf8(s)
    local r, b = ''
    for i = 1, s and s:len() or 0 do
        b = s:byte(i)
        if b < 128 then
            r = r..string.char(b)
        else
            if b > 239 then
                r = r..'\209'..string.char(b - 112)
            elseif b > 191 then
                r = r..'\208'..string.char(b - 48)
            elseif ansi_decode[b] then
                r = r..ansi_decode[b]
            else
                r = r..'_'
            end
        end
    end
    return r
end

function sendTelegramMessage(text)
    openUrl(('https://api.telegram.org/bot%s/sendMessage?chat_id=%d&text=%s'):format(settings.token, settings.chat_id, AnsiToUtf8(text)))
end

function onServerMessage(text)
    if text == '__________Банковский чек__________' then
        parse = true
        message = text
    elseif text == '__________________________________' then
        parse = false
        sendTelegramMessage(message)
        message = ''
    elseif parse then          
        message = ('%s\n%s'):format(message, text)
    end
end
Могли бы объяснить НЕработу скрипта и объяснить, как его починить?
Заранее спасибо)
Это фулл код?
 

bileneret

Новичок
Автор темы
6
0
Доброго вечерочка! Ну сначала убедись что Вы в переменную token поставили правильный токен бота и в переменную chat_id ваш реальный идентификатор чата. Если не помогло, то в функции `onServerMessage` код ожидает определенные строки (`'__________Банковский чек__________'` и `'__________________________________'`), чтобы начать и закончить сбор информации для отправки в Telegram. Убедитесь, что эти строки точно соответствуют тому, что вы получаете от сервера
Привет, уверен, что токен и ид правильны, так как уже работал с этим.
Бота не пересоздавал и он у меня сейчас работает (отправляет уведомления с сервера про кики/варны и т.п.).
Сообщения точно совпадают с серверными (взяты из чатлога)

Да, в той теме это фулл-код, что дали.
 

chromiusj

Известный
Модератор
5,661
3,964
Функции openUrl не существует
В твоем манямирке возможно и не существует,а в ракботе есть
1000012656.jpg
 

Sadow

Известный
1,428
593
Последнее редактирование:
  • Нравится
Реакции: chromiusj

chromiusj

Известный
Модератор
5,661
3,964
А.. Я думала ему для сампа. Тогда извиняюсь. Я невнимательно тему его прочитал
В раксампе нужно будет использовать реквесты,такого прикола как в ракботе нет
 

bileneret

Новичок
Автор темы
6
0
В твоем манямирке возможно и не существует,а в ракботе есть
Посмотреть вложение 208326
В ракботе есть, потому-что код в тебе с ракбота и подсмотрен, но данный скрипт я бы хотел всё таки в сампе на личном аккаунте.

А.. Я думал ему для сампа. Тогда извиняюсь. Я невнимательно тему его прочитал
Да, мне как раз для сампа, для личного аккаунта и нужно.

Функции openUrl не существует. Используй requests или effil.
Замена поможет исправить скрипт?
 

chromiusj

Известный
Модератор
5,661
3,964
В ракботе есть, потому-что код в тебе с ракбота и подсмотрен, но данный скрипт я бы хотел всё таки в сампе на личном аккаунте.


Да, мне как раз для сампа, для личного аккаунта и нужно.


Замена поможет исправить скрипт?
Для сампа ты можешь использовать старую версию этого скрипта
 

Sadow

Известный
1,428
593
Замена поможет исправить скрипт?
Lua:
local sampev = require("samp.events")
local effil = require("effil")
local encoding = require("encoding")
encoding.default = "CP1251"
u8 = encoding.UTF8

local token = ""
local chat_id = 0

function sampev.onServerMessage(color, text)
    if text:find("Банковский чек") then
        sendTg("кредит оформлен")
    end
end

function sendTg(text)
    asyncHttpRequest("GET", "https://api.telegram.org/bot" .. token .. "/sendMessage?chat_id=" .. chat_id .. "&text=" .. u8:encode(text:gsub(" ", "%+"):gsub("\n", "%%0A"), "CP1251"))
end

function asyncHttpRequest(method, url)
    local request_thread = effil.thread(function(method, url)
        local requests = require("requests")
        local result, response = pcall(requests.request, method, url)
        if result then
            response.json, response.xml = nil, nil
            return true, response
        else
            return false, response
        end
    end)(method, url)
end
 
Последнее редактирование:
  • Нравится
Реакции: chromiusj

bileneret

Новичок
Автор темы
6
0
Lua:
local sampev = require("samp.events")
local effil = require("effil")
local encoding = require("encoding")
encoding.default = "CP1251"
u8 = encoding.UTF8

local token = ""
local chat_id = 0

function sampev.onServerMessage(color, text)
    if text:find("Банковский чек") then
        sendTg("кредит оформлен")
    end
end

function sendTg(text)
    asyncHttpRequest("GET", "https://api.telegram.org/bot" .. token .. "/sendMessage?chat_id=" .. chat_id .. "&text=" .. u8:encode(text:gsub(" ", "%+"):gsub("\n", "%%0A"), "CP1251"))
end

function asyncHttpRequest(method, url)
    local request_thread = effil.thread(function(method, url)
        local requests = require("requests")
        local result, response = pcall(requests.request, method, url)
        if result then
            response.json, response.xml = nil, nil
            return true, response
        else
            return false, response
        end
    end)(method, url)
end
Заменил в твоём коде лишь токен и ид, прошел пейдей - при пейдее пусто.
Проверил бота через скрипт, что предложили выше - токен и ид правильны, отправляет сообщения
 

Sadow

Известный
1,428
593
Заменил в твоём коде лишь токен и ид, прошел пейдей - при пейдее пусто.
Проверил бота через скрипт, что предложили выше - токен и ид правильны, отправляет сообщения
moonloader.log скинь. И в какой кодировке сохранял?
 

bileneret

Новичок
Автор темы
6
0
moonloader.log скинь. И в какой кодировке сохранял?
log смогу кинуть только после получения нового пейдея
кодировка - utf8

moonloader.log скинь. И в какой кодировке сохранял?
Итак, лог после пейдея вообще пуст.
Сообщения вновь нет.
Единственное, что:
1689764484192.png

Доказательства, что пейдей капнул
 
Последнее редактирование: