RakSAMP Lite | Помощь по скрипту.

DanyaMarlow111

Участник
Автор темы
43
5
Версия SA-MP
  1. 0.3.7 (R1)
  2. 0.3.7-R2
  3. 0.3.7-R3
  4. 0.3.7-R4
Привет. Нашел скрипт, который отправляет уведомление пользователю через бота. Установил библиотеки, скрипт и при заходе на сервер скрипт загружается, но через пару секунд он начинает флудить сообщение. Не знаю как это фиксануть, помогите.
Код:
-- Подключаем модуль для обработки событий
local sampev = require('samp.events')
-- Поключаем библиотеку requests для отправки HTTP запросов
local requests = require("requests")

-- Таблица соответствия символов ANSI кодам UTF-8
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"
  }

-- Функция для перевода символов ANSI в UTF-8
function AnsiToUtf8(s)
  local t = {}
  for i = 1, #s do
    local b = s:byte(i)
    if b < 128 then
      t[#t+1] = string.char(b)
    else
      t[#t+1] = ansi_decode[b] or (b > 239 and "\209" .. string.char(b - 112) or (b > 191 and "\208" .. string.char(b - 48) or '_'))
    end
  end
return table.concat(t)
end



-- Замените <bot_token> на токен вашего бота Telegram
local bot_token = '<bot_token>'
-- Замените <chat_id> на ваш ID чата Telegram
local chat_id = '<chat_id>'

-- Непосредственно функция отправки сообщений в Telegram
local function send_telegram_message(message)
  local url = string.format('https://api.telegram.org/bot%s/sendMessage?chat_id=%s&text=%s', bot_token, chat_id, AnsiToUtf8(message))
  local response = requests.get(url)
  if response.status_code == 200 then
    print('Сообщение отправлено в Telegram')
  else
    print('Ошибка отправки сообщения в Telegram:', response.text)
  end
end

-- Функция обработки сообщений от сервера
function sampev.onServerMessage(color, text)
  local message = string.format('Сообщение от сервера: %s', text)
  send_telegram_message(message)
end
 

Вложения

  • tgnotif.lua
    2.5 KB · Просмотры: 12

tfornik

Известный
324
259
В коде увидел хук серверных сообщений
Lua:
function sampev.onServerMessage(color, text)
    local message = string.format('Сообщение от сервера: %s', text)
    send_telegram_message(message)
end
При каждом новом сообщении, бот будет отправлять их в телеграмм
Можешь убрать просто, если это именно эта проблема.
 

chromiusj

Известный
Модератор
5,653
3,955
Залезть дальше в тему и почитать: 🥲🥲🥲🤮🤮🤮🤮
Скачать сразу из топика темы и получить непонятно что: 😍😍😍😀😀😀
Буквально в этой же теме
 

DanyaMarlow111

Участник
Автор темы
43
5
а что он флудит?
серверными сообщениями?
1691774524493.png
 

tfornik

Известный
324
259
Залезть дальше в тему и почитать: 🥲🥲🥲🤮🤮🤮🤮
Скачать сразу из топика темы и получить непонятно что: 😍😍😍😀😀😀
Буквально в этой же теме
вот решение
 

tfornik

Известный
324
259
код не мой, а чапо.
Lua:
require('addon')
local effil = require 'effil'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local telegram = {
    token = '', -- токен
    chatid = '' -- чатид
}
-----------------------------------------REQUESTS-----------------------------------------

function asyncHttpRequest(method, url, args, resolve, reject)
   local request_thread = effil.thread(function (method, url, args)
       local requests = require 'requests'
      local result, response = pcall(requests.request, method, url, args)
      if result then
         response.json, response.xml = nil, nil
         return true, response
      else
         return false, response
      end
   end)(method, url, args)
   -- Если запрос без функций обработки ответа и ошибок.
   if not resolve then resolve = function() end end
   if not reject then reject = function() end end
   -- Проверка выполнения потока
   newTask(function()
      local runner = request_thread
      while true do
         local status, err = runner:status()
         if not err then
            if status == 'completed' then
               local result, response = runner:get()
               if result then
                  resolve(response)
               else
                  reject(response)
               end
               return
            elseif status == 'canceled' then
               return reject(status)
            end
         else
            return reject(err)
         end
         wait(0)
      end
   end)
end

function encodeUrl(str)
    for c in str:gmatch('[%c%p%s]') do
        if c ~= '%' then
            local find = str:find(c, 1, true)
            if find then
                wait(0)
                local char = str:sub(find, find)
                str = str:gsub(string.format('%%%s', char), ('%%%%%02X'):format(char:byte()))
            end
        end
    end
    return u8(str)
end
-----------------------------------------TELEGRAM-----------------------------------------

function sendtg(msg)
    newTask(function()
        msg = msg:gsub('{......}', '') -- удаление всех цветов
        msg = msg:gsub('_', '\\_') -- экранирование нижнего подчёркивания для Markdown
        msg = encodeUrl(msg)
        local url =
        asyncHttpRequest('GET',
            'https://api.telegram.org/bot' .. telegram.token .. '/sendMessage?chat_id=' .. telegram.chatid .. '&text='..msg..'&parse_mode=Markdown',
        nil, function(result) end)
    end)
end
 

DanyaMarlow111

Участник
Автор темы
43
5
код не мой, а чапо.
Lua:
require('addon')
local effil = require 'effil'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local telegram = {
    token = '', -- токен
    chatid = '' -- чатид
}
-----------------------------------------REQUESTS-----------------------------------------

function asyncHttpRequest(method, url, args, resolve, reject)
   local request_thread = effil.thread(function (method, url, args)
       local requests = require 'requests'
      local result, response = pcall(requests.request, method, url, args)
      if result then
         response.json, response.xml = nil, nil
         return true, response
      else
         return false, response
      end
   end)(method, url, args)
   -- Если запрос без функций обработки ответа и ошибок.
   if not resolve then resolve = function() end end
   if not reject then reject = function() end end
   -- Проверка выполнения потока
   newTask(function()
      local runner = request_thread
      while true do
         local status, err = runner:status()
         if not err then
            if status == 'completed' then
               local result, response = runner:get()
               if result then
                  resolve(response)
               else
                  reject(response)
               end
               return
            elseif status == 'canceled' then
               return reject(status)
            end
         else
            return reject(err)
         end
         wait(0)
      end
   end)
end

function encodeUrl(str)
    for c in str:gmatch('[%c%p%s]') do
        if c ~= '%' then
            local find = str:find(c, 1, true)
            if find then
                wait(0)
                local char = str:sub(find, find)
                str = str:gsub(string.format('%%%s', char), ('%%%%%02X'):format(char:byte()))
            end
        end
    end
    return u8(str)
end
-----------------------------------------TELEGRAM-----------------------------------------

function sendtg(msg)
    newTask(function()
        msg = msg:gsub('{......}', '') -- удаление всех цветов
        msg = msg:gsub('_', '\\_') -- экранирование нижнего подчёркивания для Markdown
        msg = encodeUrl(msg)
        local url =
        asyncHttpRequest('GET',
            'https://api.telegram.org/bot' .. telegram.token .. '/sendMessage?chat_id=' .. telegram.chatid .. '&text='..msg..'&parse_mode=Markdown',
        nil, function(result) end)
    end)
end
Я вроде все все правильно сделал, но ошибка все равно
1691775169416.png
 

DanyaMarlow111

Участник
Автор темы
43
5
библиотеки скачай епта
я скачал их с инструкции по уведомлениям

библиотеки скачай епта
У тебя есть библиотеки под этот скрипт? Если есть можешь скинуть пожалуйста.
 
Последнее редактирование:

chromiusj

Известный
Модератор
5,653
3,955
я скачал их с инструкции по уведомлениям


У тебя есть библиотеки под этот скрипт? Если есть можешь скинуть пожалуйста.
Возьми библиотеки из сампа кроме samp.events и перенеси к себе в раксамп
 

DanyaMarlow111

Участник
Автор темы
43
5
Возьми библиотеки из сампа кроме samp.events и перенеси к себе в раксамп
Попробую

Возьми библиотеки из сампа кроме samp.events и перенеси к себе в раксамп
Я установил библиотеки, скрипт загружается, но при банах уведы не приходят, токен и ид написаны правильно
 
Последнее редактирование: