Уведомления в Telegram по определенным сообщениям

Fufl1K

Участник
Автор темы
42
15
Версия SA-MP
  1. 0.3.7-R3
  2. 0.3.7-R4
Ищу скрипт, который будет отправлять сообщение которые я укажу в скрипте например хочу что бы мне приходило в тг бота сообщение "Вас заспавнило... Вы успешно обменяли... Сделка прошла успешно... и т.д" сообщение которые будут в чате АРЗ будут приходить в тг бота
 

sakuta

Участник
37
9
Держи, в строках функции sampev уже готовы два запроса, просто меняй под себя и по желанию добавляй еще.

p.s - второй запрос оставил как у меня в виде "примера".

уведомление:
local telegramuvedi = true -- переставьте на false если вам ненужны телеграм уведомления

local token = ('6774257109:AAG3OV82ApIbl2zGRJu--AGENi02eu9xbr4') -- токен бота @botfather
local chatid = ('450167751') -- чат айди @getmyid_bot

local link = ('https://api.telegram.org/bot' .. token .. '/sendMessage?chat_id=' .. chatid .. '&text=')

local sampev = require("samp.events")
require("addon")
local requests = require("requests")

---снизу тг уведы-------------------------------------------------------
local effil = require 'effil'

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

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 sampev.onServerMessage(color, text)
    if telegramuvedi then
        if text:find(' текст который будет искать скрипт на сервере ') then
            asyncHttpRequest('GET', AnsiToUtf8(link.. ' текст который будет отсылаться тебе в тг '), nil, nil, nil)
        end
        if telegramuvedi then
            if text:find('« {FF0000}Неоплаченное частное имущество выставлено на продажу »') then
                asyncHttpRequest('GET', AnsiToUtf8(link.. '[!!!]  ДОМИКИ СЛЕТЕЛИ, АХУЕТЬ!  [!!!]'), nil, nil, nil)
            end
        end
    end
end
 

Rice.

Известный
Модератор
1,756
1,622
Держи, в строках функции sampev уже готовы два запроса, просто меняй под себя и по желанию добавляй еще.

p.s - второй запрос оставил как у меня в виде "примера".

уведомление:
local telegramuvedi = true -- переставьте на false если вам ненужны телеграм уведомления

local token = ('6774257109:AAG3OV82ApIbl2zGRJu--AGENi02eu9xbr4') -- токен бота @botfather
local chatid = ('450167751') -- чат айди @getmyid_bot

local link = ('https://api.telegram.org/bot' .. token .. '/sendMessage?chat_id=' .. chatid .. '&text=')

local sampev = require("samp.events")
require("addon")
local requests = require("requests")

---снизу тг уведы-------------------------------------------------------
local effil = require 'effil'

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

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 sampev.onServerMessage(color, text)
    if telegramuvedi then
        if text:find(' текст который будет искать скрипт на сервере ') then
            asyncHttpRequest('GET', AnsiToUtf8(link.. ' текст который будет отсылаться тебе в тг '), nil, nil, nil)
        end
        if telegramuvedi then
            if text:find('« {FF0000}Неоплаченное частное имущество выставлено на продажу »') then
                asyncHttpRequest('GET', AnsiToUtf8(link.. '[!!!]  ДОМИКИ СЛЕТЕЛИ, АХУЕТЬ!  [!!!]'), nil, nil, nil)
            end
        end
    end
end
блять, зачем вы продолжаете использовать ansi_decode и AnsiToUtf8, в чем проблема закинуть в либы iconv и encoding
да и зачем ему код для раксампа?
 
  • Нравится
Реакции: de_clain и recxvery

sakuta

Участник
37
9
блять, зачем вы продолжаете использовать ansi_decode и AnsiToUtf8, в чем проблема закинуть в либы iconv и encoding
да и зачем ему код для раксампа?
упс, я думал чел на рак самп ищет, а по поводу анси, у меня был просто готовый код, вот его и кинул увидев в похожих темах когда чет чекал связанное с раксампом