package.path = "./scripts/libs/?.lua";
package.cpath = "./scripts/libs/?.dll";
local token = ''
local chatid = ''
local link = ('https://api.telegram.org/bot' .. token .. '/sendMessage?chat_id=' .. chatid .. '&text=' )
local tgbot = require("lua-bot-api").configure(token)
local lanes = require("lanes").configure()
local linda = lanes.linda()
require 'Tasking'
onScriptUpdate = Tasking.tick
local json = require 'cjson'
local effil = require("effil")
local encoding = require("encoding")
encoding.default = 'CP1251'
u8 = encoding.UTF8
function encodeUrl(str)
str = str:gsub(' ', '%+')
str = str:gsub('\n', '%%0A')
return u8:encode(str, 'CP1251')
end
local ban30day = {"мать ебал", "mq", "сервер говно", "сервер хуета", "мать курва", "мать шалава", "переезжаем на:", "переходим на", "сервер закрывается", "переезд"}
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 getIp()
ip = openUrl('https://api.ipify.org/?format=json')
return ip:match('{\"ip\":\"(.*)\"}')
end
function updateThread(token)
local bot, ext = require("lua-bot-api").configure(token)
ext.onTextReceive = function(msg)
linda:send("tg_message_recv", { from = msg.from.id, text = msg.text })
end
ext.run()
end
function onScriptUpdate()
local eventName, eventData = linda:receive(0, "tg_message_recv")
if eventName == "tg_message_recv" then
onTelegramMessage(eventData.from, eventData.text)
end
end
function onScriptStart()
math.randomseed(os.time())
lanes.gen("*", updateThread)(token)
end
function isCoordsInArea2d(x, y, ax, ay, bx, by)
if x > ax and x < bx and y < ay and y > by then
return true
end
return false
end
function onServerMessage(msg)
local text = msg:match("%[A:%d+%] Administrator%[%d+%]: (.+)")
if text then
openUrl(AnsiToUtf8(text))
end
for k,v in ipairs(ban30day) do
if msg:find(' (.+)%[(%d+)%]%: '..v..'') then
admin_nick, admin_id, other = msg:match(' (.+)%[(%d+)%]%: '..v..'')
cmd = v
sendInput("/ban "..admin_id.." 30 Неприличные высказывания/слив.")
sendInput("/a Игрок: ".. admin_nick .." попытался нарушить правила чата! И был наказан! ")
sendInput("/a Игрок: ".. admin_nick .." попытался нарушить правила чата! И был наказан! ")
openUrl(AnsiToUtf8(link..'%E2%9C%85 Игрок '..admin_nick..' попытался слить глобальный чат/оскорбить проект и был заблокирован!'))
end
end
end
function onTelegramMessage(from, text)
sn = getServerName()
nickname = getNickName()
money = getMoney()
id = getBotId()
ip = getServerAddress()
state = getBotState()
online = getPlayersCount()
if text == "/bots" then
openUrl(AnsiToUtf8(link..'[Bot] Активный бот:%0A%0AНик: '..nickname..'%0AСервер: '..sn..'%0AАйди: '..id..'%0AIP Address: '..ip..'%0AСостояние бота: '..state))
elseif text:find("/action1 (.+)") then
action = text:match("/action1 (.+)")
local decodeAction = Utf8ToAnsi(action)
sendInput(action)
openUrl(AnsiToUtf8(link..'%E2%9C%85 Успешно выполнен запрос, содержимое запроса: %0A') .. action)
elseif text == "/captcha 1" then
cmd = v
capt = math.random(100000000000, 9999999999999)
captcha = true
openUrl(AnsiToUtf8(link..'%E2%9D%97 Запуск капчу на ПОВЫШЕНИЕ успешно выполнен! '))
sendInput("/a Без проблем! Запускаю рандомную капчу на ПОВЫШЕНИЕ Админ-Прав!")
sendInput("/a Вниманuе! капча "..capt.." | приз: ПОВЫШЕНИЕ на 1 lvl! Отправлять в (/a)")
end
end
function encodeUrl(str)
str = str:gsub(' ', '%+')
str = str:gsub('\n', '%%0A')
return u8:encode(str, 'CP1251')
end
function onDialogShow(dialogId, dialogStyle, dialogTitle, okButtonText, cancelButtonText, dialogText)
sendDialog(2934, 1, 0, "0")
end
function OnDialogShow(id, style, title, button1, button2, text)
if id == 15330 then
if active then
sampCloseCurrentDialogWithButton(0)
sampSendDialogResponse(id, 0, nil, nil)
else
active = true
end
end
end