From fb4a33a29c41e328bf23bb87cc0853a9fa7eeebf Mon Sep 17 00:00:00 2001 From: ibrahim Date: Tue, 5 Apr 2016 20:22:49 +0300 Subject: [PATCH] #fix all prob. --- bot.lua | 505 +++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 466 insertions(+), 39 deletions(-) diff --git a/bot.lua b/bot.lua index de4f887..71baad9 100644 --- a/bot.lua +++ b/bot.lua @@ -10,7 +10,11 @@ local bot_api_key = "" --التوكم هنا local You = --خلي ايدي حسابك local BASE_URL = "https://api.telegram.org/bot"..bot_api_key local BASE_FOLDER = "" -local start = [[]] -- خلي بنص [[]] رساله ترحيب +local start = [[ ]] + +------- + +----utilites---- local help = [[ ➖➖➖➖➖➖➖➖➖➖➖ *commands:*`for admin` @@ -281,32 +285,19 @@ function bot_run() add.broadcast = add.broadcast or {} -- end function msg_processor(msg) - 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[msg.from.id] = "false" - save_data('mico.db', add) -end -if msg.text ~= "/broadcast" and add.broadcast[msg.from.id] == "true" then -if is_admin(msg) then -if msg.text and msg.text ~= "/unbroadcast" then -for k,v in pairs(add.id) do -sendMessage(v,string.gsub(msg.text,"/broadcast",""),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 +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 -if msg.text == "/start" and is_add(msg) then +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 @@ -321,7 +312,34 @@ elseif is_admin(msg) and msg.text == "/users" then local t = string.gsub(r," ","") sendMessage(You,t,true,false,true) -elseif is_admin(msg) and msg.reply_to_message and msg.reply_to_message.forward_from ~= nil and msg.text == "/ban" then +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 @@ -347,21 +365,430 @@ elseif is_admin(msg) and msg.reply_to_message and msg.text == "/id" then elseif is_admin(msg) and msg.text == "/broadcast" then - add.broadcast[msg.from.id] = "true" - + 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 +local BASE_FOLDER = "" +local start = [[ [مرحبا بك في بوت التواصل👀] + + + *{\TE_(SPΛCE)_CH/}* + [ +يمكنك طرح اي فكره او استفسار 💋 + + +او ماذا تريد ان اشرح لك خلال رساله + + +المطور :- @MALVOO +القناه :- @lua_lua ] +]] + +------- + +----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 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 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