diff --git a/bot.lua b/bot.lua index 71baad9..29a2bf9 100644 --- a/bot.lua +++ b/bot.lua @@ -6,413 +6,6 @@ JSON = require('dkjson') HTTPS = require('ssl.https') dofile('utilities.lua') ----config---- -local bot_api_key = "" --التوكم هنا -local You = --خلي ايدي حسابك -local BASE_URL = "https://api.telegram.org/bot"..bot_api_key -local BASE_FOLDER = "" -local start = [[ ]] - -------- - -----utilites---- -local help = [[ -➖➖➖➖➖➖➖➖➖➖➖ -*commands:*`for admin` -`/ban` ✴️ -*حظر عضو من ارسال رساله بالرد على رسالته* -`/unban` ✴️ -*فتح الحظر عن عضو عن طريق الرد على رسالته* -`/users` ✴️ -*معرفه عدد الاعضاء المشتركين* -`/broadcast` ✴️ -*ارسل هذا الامر وكل رساله كانت بعده سترسل لجميع المشتركين* -`/unbroadcast` ✴️ -*لكي تتوقف ارسال الرسائل وتفعيل الاوامر البقيه* -`/start` ✴️ -*لأظهار رساله ترحيب للاعضاٱء* -`/id` ✴️ -*بالرد على رساله موجهه يضهر لك المعلومات* -➖➖➖➖➖➖➖➖➖➖➖ -]]--اوامر المساعدة -------- - -----utilites---- - -function is_admin(msg)-- Check if user is admin or not - local var = false - local admins = {You} - for k,v in pairs(admins) do - if msg.from.id == v then - var = true - end - end - return var -end -function is_add(msg)-- Check if user is ADD or not - local var = false - local add = add.id - for k,v in pairs(add) do - if msg.from.id == v then - var = true - end - end - return var -end -function is_ban(msg)-- Check if user is ban or not - local var = false - local add = ban.id - for k,v in pairs(add) do - if msg.from.id == v then - var = true - end - end - return var -end -function sendRequest(url) - local dat, res = HTTPS.request(url) - local tab = JSON.decode(dat) - - if res ~= 200 then - return false, res - end - - if not tab.ok then - return false, tab.description - end - - return tab - -end -function getMe() - local url = BASE_URL .. '/getMe' - return sendRequest(url) -end -function getUpdates(offset) - - local url = BASE_URL .. '/getUpdates?timeout=20' - - if offset then - - url = url .. '&offset=' .. offset - - end - - return sendRequest(url) - -end -function sendSticker(chat_id, sticker, reply_to_message_id) - - local url = BASE_URL .. '/sendSticker' - - local curl_command = 'curl -s "' .. url .. '" -F "chat_id=' .. chat_id .. '" -F "sticker=@' .. sticker .. '"' - - if reply_to_message_id then - curl_command = curl_command .. ' -F "reply_to_message_id=' .. reply_to_message_id .. '"' - end - - io.popen(curl_command):read("*all") - return end -function sendPhoto(chat_id, photo, caption, reply_to_message_id) - - local url = BASE_URL .. '/sendPhoto' - - local curl_command = 'curl -s "' .. url .. '" -F "chat_id=' .. chat_id .. '" -F "photo=@' .. photo .. '"' - - if reply_to_message_id then - curl_command = curl_command .. ' -F "reply_to_message_id=' .. reply_to_message_id .. '"' - end - - if caption then - curl_command = curl_command .. ' -F "caption=' .. caption .. '"' - end - - io.popen(curl_command):read("*all") - return end -function forwardMessage(chat_id, from_chat_id, message_id) - - local url = BASE_URL .. '/forwardMessage?chat_id=' .. chat_id .. '&from_chat_id=' .. from_chat_id .. '&message_id=' .. message_id - - return sendRequest(url) - -end -function sendMessage(chat_id, text, disable_web_page_preview, reply_to_message_id, use_markdown) - - local url = BASE_URL .. '/sendMessage?chat_id=' .. chat_id .. '&text=' .. URL.escape(text) - - if disable_web_page_preview == true then - url = url .. '&disable_web_page_preview=true' - end - - if reply_to_message_id then - url = url .. '&reply_to_message_id=' .. reply_to_message_id - end - - if use_markdown then - url = url .. '&parse_mode=Markdown' - end - - return sendRequest(url) - -end -function sendDocument(chat_id, document, reply_to_message_id) - - local url = BASE_URL .. '/sendDocument' - - local curl_command = 'cd \''..BASE_FOLDER..currect_folder..'\' && curl -s "' .. url .. '" -F "chat_id=' .. chat_id .. '" -F "document=@' .. document .. '"' - - if reply_to_message_id then - curl_command = curl_command .. ' -F "reply_to_message_id=' .. reply_to_message_id .. '"' - end - io.popen(curl_command):read("*all") - return - -end -function download_to_file(url, file_name, file_path) - print("url to download: "..url) - - local respbody = {} - local options = { - url = url, - sink = ltn12.sink.table(respbody), - redirect = true - } - -- nil, code, headers, status - local response = nil - options.redirect = false - response = {HTTPS.request(options)} - local code = response[2] - local headers = response[3] - local status = response[4] - if code ~= 200 then return nil end - local file_path = BASE_FOLDER..currect_folder..file_name - - print("Saved to: "..file_path) - - file = io.open(file_path, "w+") - file:write(table.concat(respbody)) - file:close() - return file_path -end -function sendPhotoID(chat_id, file_id, caption, reply_to_message_id, disable_notification) - - local url = BASE_URL .. '/sendPhoto?chat_id=' .. chat_id .. '&photo=' .. file_id - - if caption then - url = url .. '&caption=' .. URL.escape(caption) - end - - if reply_to_message_id then - url = url .. '&reply_to_message_id=' .. reply_to_message_id - end - - if disable_notification then - url = url .. '&disable_notification=true' - end - - return sendRequest(url) - -end -function getUserProfilePhotos(user_id) -if user_id == nil then -return -else -local url = BASE_URL .. '/getUserProfilePhotos?user_id='..user_id -print(url) -return sendRequest(url) -end -end -function download_to_file(url, file_name, file_path) - print("url to download: "..url) - - local respbody = {} - local options = { - url = url, - sink = ltn12.sink.table(respbody), - redirect = true - } - -- nil, code, headers, status - local response = nil - options.redirect = false - response = {HTTPS.request(options)} - local code = response[2] - local headers = response[3] - local status = response[4] - if code ~= 200 then return nil end - local file_path = file_name - - print("Saved to: "..file_path) - - file = io.open(file_path, "w+") - file:write(table.concat(respbody)) - file:close() - return file_path -end --------- @MALVOO & @DEV_MICO -function bot_run() - bot = nil - - while not bot do -- Get bot info - bot = getMe() - end - - bot = bot.result - if not add then - add = load_data('mico.db') - end - if not ban then - ban = load_data('ban.db') - end - local bot_info = "Username = @"..bot.username.."\nName = "..bot.first_name.."\nId = "..bot.id.." \nBASED BY :- @DEV_MICO , @MALVOO" - - print(bot_info) - for k,v in pairs(add.id) do - print(k.." :"..v) - end - - last_update = last_update or 0 - - currect_folder = "" - - is_running = true - math.randomseed(os.time()) - math.random() - - - last_cron = last_cron or os.date('%M', os.time()) -- the time of the last cron job, - is_started = true -- and whether or not the bot should be running. - add.id = add.id or {} --TABLE FUCKERRRRRRRRRRRRRRRRRRRRRRRRRRR - ban.id = ban.id or {} - add.broadcast = add.broadcast or {} -- -end -function msg_processor(msg) - -if msg.text == "/start" and not is_add(msg) then - table.insert(add.id,msg.from.id) - print("adding.....") - local user = "" -if msg.from.username == nil then -user = bot.username -else -user = msg.from.username -end -local text = "مرحبا بك يا ["..msg.from.first_name.."](www.telegram.me/"..user..")" -sendMessage(msg.chat.id,text.."\n"..start,true,false,true) -elseif msg.text == "/start" and is_add(msg) then - print(#add.id) - local user = "" -if msg.from.username == nil then -user = bot.username -else -user = msg.from.username -end -local text = "مرحبا بك يا ["..msg.from.first_name.."](www.telegram.me/"..user..")" -sendMessage(msg.chat.id,text.."\n"..start,true,false,true) -elseif is_admin(msg) and msg.text == "/users" then - local r = tostring(#add.id) - - local t = string.gsub(r," ","") -sendMessage(You,t,true,false,true) -end -if msg.text == '/help' then -sendMessage(msg.chat.id,help,true,false,true) -end -if is_ban(msg) then return end -if msg.date < os.time() - 5 then -- Ignore old msgs - return -end -if msg.text == "/unbroadcast" then - add.broadcast = "broadcast" - save_data('mico.db', add) - sendMessage(msg.chat.id,"*I will not broadcast any more*",true,false,true) -end -if msg.text ~= "/broadcast" and add.broadcast ~= "broadcast" then -if is_admin(msg) then -if msg.text and msg.text ~= "/unbroadcast" then -for k,v in pairs(add.id) do -sendMessage(v,msg.text,true,false,true) -end - -elseif not msg.text then -for k,v in pairs(add.id) do -forwardMessage(v,You,msg.message_id) -end -end -end -elseif msg.text ~= "/" then -if is_admin(msg) and msg.reply_to_message and msg.reply_to_message.forward_from ~= nil and msg.text == "/ban" then -table.insert(ban.id,msg.reply_to_message.forward_from.id) -sendMessage(msg.reply_to_message.forward_from.id,"*YOU HAVE BEEN BANNED*",true,false,true) -elseif is_admin(msg) and msg.reply_to_message and msg.reply_to_message.forward_from ~= nil and msg.text == "/unban" then -for k, v in pairs(ban["id"]) do -if ( v == msg.reply_to_message.forward_from.id ) then -table.remove(ban["id"], k) -end -end -sendMessage(msg.reply_to_message.forward_from.id,"*YOU HAVE BEEN unBANNED*",true,false,true) -elseif is_admin(msg) and msg.reply_to_message and msg.text == "/id" then - if msg.reply_to_message.forward_from.last_name ~= nil then - last_name = msg.reply_to_message.forward_from.last_name - else - last_name = "" - end - if msg.reply_to_message.forward_from.username ~= nil then - usernme = "\nUSERNAME : @"..msg.reply_to_message.forward_from.username - else - usernme = "" - end - local E = "NAME : "..msg.reply_to_message.forward_from.first_name.." "..last_name..usernme.."\nID :"..msg.reply_to_message.forward_from.id - sendMessage(msg.chat.id,E) - -elseif is_admin(msg) and msg.text == "/broadcast" then - - add.broadcast = "unbroadcast" - sendMessage(msg.chat.id,"*I will send every thing u want*",true,false,true) -save_data('mico.db', add) - - -elseif not is_ban(msg) and msg.text ~= "/start" and msg.text ~= "/id" and msg.text ~= "/unban" and msg.text ~= "/ban" then -if is_admin(msg) and msg.reply_to_message then -forwardMessage(msg.reply_to_message.forward_from.id,msg.from.id,msg.message_id) ---print(msg.from.id) -print(msg.reply_to_message.from.id) -print(msg.reply_to_message.forward_from.id) ---print(msg.reply_to_message.from.id) -print(msg.reply_to_message.message_id) -elseif not is_admin(msg) then -forwardMessage(You,msg.chat.id,msg.message_id) -end -end -end -end -bot_run() -- Run main function -while is_running do -- Start a loop witch receive messages. - local response = getUpdates(last_update+1) -- Get the latest updates using getUpdates method - if response then - for i,v in ipairs(response.result) do - last_update = v.update_id - msg_processor(v.message) - end - else - print("Conection failed") - end -if last_cron ~= os.date('%M', os.time()) then -- Run cron jobs every minute. - last_cron = os.date('%M', os.time()) - save_data('mico.db', add) -- Save the database. - save_data('ban.db', ban) - - end -end -save_data('mico.db', add) -save_data('ban.db', ban) -print("Bot halted") -package.path = package.path .. ';.luarocks/share/lua/5.2/?.lua' - ..';.luarocks/share/lua/5.2/?/init.lua' -package.cpath = package.cpath .. ';.luarocks/lib/lua/5.2/?.so' -URL = require('socket.url') -JSON = require('dkjson') -HTTPS = require('ssl.https') -dofile('utilities.lua') -----config---- local bot_api_key = "209834280:AAEy9TEZfXSt9xrq3JNLn8jCJcfQxpS_cwY" --التوكم هنا local You = 197659452 --خلي ايدي حسابك local BASE_URL = "https://api.telegram.org/bot"..bot_api_key