Facebook
From 2b, 3 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 77
  1. import threading
  2. from random import choice
  3. from os import listdir
  4. from time import sleep
  5. import time
  6. import re
  7. from itertools import islice
  8. from datetime import datetime
  9.  
  10. from SQL import Account
  11. from SQL import DateTime
  12. from SQL import Username
  13. from SQL import AdminsBot
  14. from SQL import Groups
  15. from SQL import SettingAddmember
  16. from SQL import AddStatistics
  17.  
  18. from pyrogram import Client
  19. from pyrogram import filters
  20. from pyrogram import idle
  21. from pyrogram import errors
  22.  
  23. from pyrogram.types import InlineKeyboardButton as button
  24. from pyrogram.types import InlineKeyboardMarkup as markup
  25. from pyrogram.types import ForceReply as reply
  26.  
  27. api_id, api_hash = 2624818, "9d6e5f2365a2a9867d219e869f3e3656" #api_id,"api_hash"
  28. token="1690295388:AAHC0gcrIlDGnjIW7cWYpoDL_-TO8auo_Hs" #Token bot API
  29. app = Client("bot",api_id,api_hash,bot_token=token)
  30.  
  31. numbers = list()
  32. for fil in listdir('sessions'):
  33.      numbers.append(fil.split("phone")[-1].split(".")[0])
  34.  
  35. global step
  36. global phone_code_hashs
  37. global sessions
  38. global y
  39. step= 'None'
  40. phone_code_hashs= dict()
  41. sessions= dict()
  42. y= 0
  43. Message = None
  44.  
  45. @app.on_message(filters.command(['start']))
  46. def start (client,message):
  47.       chat_id = message.chat.id
  48.       print("Start id ->",chat_id)
  49.       message_id = message.message_id
  50.       Menu(chat_id,message_id)
  51.  
  52. @app.on_callback_query()
  53. def querys(_, query):
  54.       chat_id = query.message.chat.id
  55.       message_id = query.message.message_id
  56.       data = query.data
  57.  
  58.       db = AdminsBot("Model.db")
  59.       db.create_table()
  60.       listadmins = db.get_list_admins()
  61.       DeleteAdmin = [Id[1] for Id in listadmins]
  62.       db.close()
  63.  
  64.       db = Groups("Model.db")
  65.       db.create_table()
  66.       List_groups = db.get_list_groups()
  67.       DeleteGroup = [Id[1] for Id in List_groups]
  68.       AddToGroup = [Id[1]for Id in List_groups]
  69.       db.close()
  70.      
  71.  
  72.       if data == "StartLogin"      : StartLogin(chat_id,message_id,query)
  73.       if data == "ComebackToMenu"  : Menu2(chat_id,message_id)
  74.       if data == "StartUAR"        : StartUAR(chat_id,message_id)
  75.       if data == "StarCollect"     : StarCollect(chat_id,message_id,query)
  76.       if data == "StartSet"        : StartSet(chat_id,message_id)
  77.       if data == "SetAdd"          : SetAdd(chat_id,message_id,query)
  78.       if data == "EditAccount"     : EditAccount(chat_id,message_id)
  79.       if data == "RemoveAccount"   : RemoveAccount(chat_id,message_id,query)
  80.       if data == "EditAdmins"      : EditAdmins(chat_id,message_id)
  81.       if data == "ComebackSettings": StartSet(chat_id,message_id)
  82.       if data == "AddAdmin"        : AddAdmin(chat_id,message_id,query)
  83.       if data == "RemoveAdmin"     : RemoveAdmin(chat_id,message_id,query)
  84.       if data == "ShowAdmins"      : ShowAdmins(chat_id,message_id,query)
  85.       if data == "StartStat"       : Statistics(chat_id,message_id)
  86.       if data == "Accounts"        : Accounts(chat_id,message_id,query)
  87.       if data == "Activity"        : Activityy(chat_id,message_id,query)
  88.       if data == "EditGroups"      : EditGroups(chat_id,message_id)
  89.       if data == "AddGroup"        : AddGroup(chat_id,message_id)
  90.       if data == "SettingAdd"      : SettingAdd(chat_id,message_id)
  91.       if data == "RemoveGroup"     : RemoveGroup(chat_id,message_id,query)
  92.       if data == "ShowGroup"       : ShowGroup(chat_id,message_id,query)
  93.       if data == "ShowSettings"    : ShowSettings(chat_id,message_id,query)
  94.       if data == "StartAdd"        : StartAdd(chat_id,message_id,query)
  95.       if data == "EditSettings"    : EditSettings(chat_id,message_id)
  96.       if data == "IDeas"           : IDeas(chat_id,message_id)
  97.       if data == "None"            : MessageNone(chat_id,message_id,query)
  98.       if data[:2] == "re" and data[2:] in DeleteAdmin : DeleteAdmins(chat_id,message_id,query,data)
  99.       if data[:2] == "re" and data[2:] in DeleteGroup : DeleteGroups(chat_id,message_id,query,data)
  100.       if data[:2] == "ad" and data[2:] in AddToGroup  : AddToGroups(chat_id,message_id,query,data)
  101.  
  102. @app.on_message()
  103. def Updates(app,message):
  104.       global step
  105.       chat_id = message.chat.id
  106.       message_id = message.message_id
  107.       text = message.text
  108.  
  109.       if step == "GetPhone":
  110.             GetPhone(chat_id,message_id,text)
  111.       elif step.split(" ")[0] == "LoginCode":
  112.             LoginCode(chat_id,message_id,text)
  113.       elif step == "GetUsername":
  114.             GetUsername(chat_id,message_id,text)
  115.       elif step == "SaveAdmin":
  116.             SaveAdmin(chat_id,message_id,text,message)
  117.       elif step == "SaveGroup":
  118.             SaveGroup(chat_id,message_id,text,message)
  119.       elif step == "GetActivityRange":
  120.             GetActivityRange(chat_id,message_id,text,message)
  121.       elif step == "DeleteAccount":
  122.             DeleteAccount(chat_id,message_id,text,message)
  123.       elif step[:11] == "GetAddRange" and step[11:].isdigit():
  124.             GetAddRange(chat_id,message_id,text,message)
  125.       elif step[:18] == "GettActivityNumber":
  126.             GettActivityNumber(chat_id,message_id,text,message)
  127.  
  128.  
  129. #Menu------------------------------------------------------------------------------------------------------------
  130. def Menu(chat_id,message_id):
  131.       modir = 1569699710 #add chat_id modir
  132.       db = AdminsBot("Model.db")
  133.       db.create_table()
  134.       list_admin = db.get_list_admins()
  135.       db.close()
  136.       list_a = [i[1] for i in list_admin]
  137.       if chat_id == modir or str(chat_id) in list_a:
  138.  
  139.             app.send_message(chat_id,
  140.                               " ??? Hi Admin. \nSelect Your Fav",
  141.                               reply_to_message_id = message_id,
  142.                               reply_markup = markup([[button("Login New Account ?",callback_data="StartLogin")],
  143.                               [button("Collect Usernames ?",callback_data="StarCollect"),button("Add ? to Group ?",callback_data="StartAdd")],
  144.                               [button("Statistics ?",callback_data="StartStat"),button("? Bot Settings ⚙️",callback_data="StartSet")],
  145.                               [button("Update Account Reports",callback_data="StartUAR")]
  146.                               ]))
  147.       else:
  148.             app.send_message(chat_id,f"⭕️ <code>You are not allowed to use this robot</code>",parse_mode='html')
  149.  
  150. def Menu2(chat_id,message_id):
  151.  
  152.       app.edit_message_text(chat_id,message_id,
  153.                         " ??? Hi Admin. \nSelect Your Fav",
  154.                         reply_markup = markup([[button("Login New Account ?",callback_data="StartLogin")],
  155.                         [button("Collect Usernames ?",callback_data="StarCollect"),button("Add ? to Group ?",callback_data="StartAdd")],
  156.                         [button("Statistics ?",callback_data="StartStat"),button("? Bot Settings ⚙️",callback_data="StartSet")],
  157.                         [button("Update Account Reports",callback_data="StartUAR")]
  158.                         ]))
  159. #/----------------------------------------------------------------------------------------------------------------
  160.  
  161. #MessageNone------------------------------------------------------------------------------------------------------
  162. def MessageNone(chat_id,message_id,query):
  163.       query.answer(f"??? ??? ?????")
  164. #/----------------------------------------------------------------------------------------------------------------
  165.  
  166. #MessageTwo-------------------------------------------------------------------------------------------------------
  167. def MessageTwo(chat_id,message_id):
  168.       app.send_message(chat_id,"The ID list is empty")
  169. #/----------------------------------------------------------------------------------------------------------------
  170.  
  171. #MessageTree-------------------------------------------------------------------------------------------------------
  172. def MessageThree(chat_id,message_id):
  173.       app.send_message(chat_id,"The number of accounts you request is more than the existing accounts")
  174. #/----------------------------------------------------------------------------------------------------------------
  175.  
  176.  
  177. #log in-----------------------------------------------------------------------------------------------------------
  178. def StartLogin(chat_id,message_id,query):
  179.     global step
  180.     app.edit_message_text(chat_id,message_id,"<code>Send Your Number</code>\n<i>For example:</i> <b>+989381754806</b>",parse_mode="html")
  181.     step = "GetPhone"
  182.  
  183. def GetPhone(chat_id,message_id,text):
  184.      global step
  185.      if not text[1:].isdigit() or text[0] != "+":
  186.           app.send_message(chat_id, f"<code>Your Number Is Wrong</code>❌",parse_mode="html",reply_to_message_id = message_id)
  187.           step = "GetPhone"
  188.           return
  189.  
  190.      Send_Code_Request(chat_id, message_id, text.replace(" ", ""))
  191.  
  192. def Send_Code_Request(chat_id,message_id,number):
  193.      global step
  194.      global phone_code_hashs
  195.      global sessions
  196.      session = f'sessions/phone{number}'
  197.      api_id, api_hash = 2624818, "9d6e5f2365a2a9867d219e869f3e3656" #api_id,"api_hash"
  198.      client = Client(session,api_id,api_hash)
  199.      client.connect()
  200.  
  201.      try:
  202.  
  203.           phone_code_hash = client.send_code(number).phone_code_hash
  204.           app.send_message(chat_id, f"<code>Code Sended To</code> <b>{number}</b> <code>\nPlease Enter 5 digit Login Code!</code>",parse_mode="html",reply_to_message_id=message_id)
  205.           sessions[number] = client
  206.           phone_code_hashs[number] = phone_code_hash
  207.           step = f"LoginCode {number}"
  208.  
  209.      except errors.PhoneNumberInvalid as error:
  210.           print(error)
  211.           app.send_message(chat_id,"<b>The phone number is invalid!</b>\nPlease correct the number or send another number",parse_mode="html", reply_to_message_id = message_id)
  212.           step = 'GetPhone'
  213.      
  214. def LoginCode(chat_id,message_id,code):
  215.       global step
  216.       global phone_code_hashs
  217.       global sessions
  218.  
  219.       if not code.isdigit() or len(code) != 5:
  220.             app.send_message(chat_id,"<code>Your Login Code Is Wrong</code>",parse_mode='html',reply_to_message_id = message_id)
  221.             return
  222.  
  223.       number = step.split(" ")[1]
  224.       client = sessions[number]
  225.       #Register and Login
  226.       try:
  227.  
  228.             client.sign_in(phone_number= number,phone_code_hash =phone_code_hashs[number], phone_code=code)
  229.  
  230.       except errors.PhoneNumberUnoccupied as error:
  231.             client.sign_up(phone_number= number,phone_code_hash= phone_code_hash, first_name= "aryn" , last_name= "kaviani")
  232.             app.send_message(chat_id,"<b>Register and Login Successfull!</b>",parse_mode="html", reply_to_message_id= message_id)
  233.             step = 'None'
  234.             return
  235.       except errors.SessionPasswordNeeded as error:
  236.             print(error)
  237.             app.send_message(chat_id,"<b>Two-step verification password required!</b>\nPlease disable the two steps and then send the number here",parse_mode="html", reply_to_message_id = message_id)
  238.             step = 'GetPhone'
  239.             return
  240.       except errors.PhoneCodeExpired as error:
  241.             print(error)
  242.             app.send_message(chat_id,"<b>The confirmation code has expired!</b>",parse_mode="html", reply_to_message_id= message_id)
  243.             step = 'None'
  244.             return
  245.       except errors.PhoneCodeInvalid as error:
  246.             print(error)
  247.             app.send_message(chat_id,"<b>The confirmation code is invalid!</b>",parse_mode="html", reply_to_message_id= message_id)
  248.             step = 'None'
  249.  
  250.       except Exception as error:
  251.             print(error)
  252.  
  253.       else:
  254.  
  255.             app.send_message(chat_id, "<code>Login Successfull.</code>",parse_mode="html", reply_to_message_id=message_id)
  256.             SpamBot(chat_id,message_id,number)
  257.  
  258. def SpamBot(chat_id,message_id,number,c=None):
  259.       api_id, api_hash = 2624818, "9d6e5f2365a2a9867d219e869f3e3656" #api_id,"api_hash"
  260.       try:
  261.  
  262.             with Client(f'sessions/phone{number}',api_id,api_hash)as app:
  263.  
  264.                   app.send_message("@SpamBot","/start")
  265.                   count = 1
  266.                   for message in app.iter_history("SpamBot"):
  267.                         if count == 1:
  268.                               text = message.text
  269.                               count += 1
  270.                               if re.search(r"^Good news",text) or re.search(r"^مژده",text):
  271.                                     report = False
  272.                                    
  273.  
  274.                               elif re.search(r"Unfortunately",text):
  275.                                     report = "Permanent"
  276.                                    
  277.                                    
  278.                               elif re.search(r"limited until(.*)\.",text):
  279.                                     reep = re.findall(r"limited until(.*)\.",text)
  280.                                     report =reep[0]
  281.  
  282.                         else:pass
  283.                         #DataBaste
  284.                   db = Account("Model.db")
  285.                   db.create_table()#Create Table
  286.                  
  287.                   all_phone_number = db.get_list_phone()
  288.                   if str(number) not in all_phone_number:
  289.                         SaveAccountNew(chat_id,number,api_id,api_hash,report)
  290.                        
  291.                   elif str(number) in all_phone_number:
  292.                         UpdatesReportAccount(report,number,c,chat_id,message_id)
  293.                   db.close()
  294.                  
  295.       except Exception as error:
  296.             print(f"Error 1{error}")
  297.                  
  298. def SaveAccountNew(chat_id,number,api_id,api_hash,report):
  299.       date = DateTime().d
  300.       time = DateTime().t
  301.       SuccessfulAdds,UnSuccessfulAdds,Adds = 0,0,0
  302.       AllData = (f"{number}",f"{api_id}",f"{api_hash}",f"{report}",f"False",f"{date}",f"01-01-2020",f"{time}",f"{0}",f"{0}",f"{0}")
  303.  
  304.       db = Account("Model.db")
  305.       db.insert_data(AllData)
  306.       print(f"insert data phone number {number} to database")
  307.       app.send_message(chat_id,f"✅ <code>Insert Data Phone Number</code> <b>{number}</b> <code>To Database</code>")
  308.       db.close()
  309.  
  310. def UpdatesReportAccount(report,number,c,chat_id,message_id):
  311.       global y,Message
  312.       db = Account("Model.db")
  313.       reports = (f"{report}",f"{number}")
  314.  
  315.       db.update_report(reports)
  316.       list_account = db.get_list_phone()
  317.       db.close()
  318.  
  319.       l = len(list_account)
  320.       print(f"({number}) -> report:{report}")
  321.       if y <= 0:
  322.           Message= app.send_message(chat_id,f"<code>({number})</code> -> <b>report:</b><code>{report}</code>",parse_mode='html')
  323.           y += 1
  324.       else:
  325.           app.edit_message_text(chat_id,Message.message_id,f"<code>({number})</code>\n<b>report:</b><code>{report}</code>",parse_mode='html')
  326.        
  327.       if c == l:
  328.             sleep(1)
  329.             app.send_message(chat_id,f"<code>✅ The report status of your accounts has been updated</code>",parse_mode='html',reply_to_message_id=message_id)
  330.       else:pass
  331. #/-----------------------------------------------------------------------------------------------------------------
  332.  
  333.  
  334. #get username------------------------------------------------------------------------------------------------------
  335. def StarCollect(chat_id,message_id,query):
  336.       global step
  337.       app.edit_message_text(chat_id,message_id,"<code>Send The Group Link Or Username</code>\n<i>For example:</i> <b>@username</b>",parse_mode="html",
  338.       reply_markup=markup([[button("Comeback To Menu ? ",callback_data="ComebackToMenu")]]))
  339.       step = "GetUsername"
  340.  
  341. def GetUsername(chat_id,message_id,text):
  342.      
  343.       api_id, api_hash = 2624818, "9d6e5f2365a2a9867d219e869f3e3656" #api_id,"api_hash"
  344.       try:
  345.  
  346.             with Client('session_me',api_id,api_hash) as app:
  347.                   count = 0
  348.                   try:
  349.                         app.join_chat(text)
  350.                   except Exception as error:print(error)
  351.                   try:
  352.                         for member in app.iter_chat_members(f"{text[1:]}"):
  353.                               if member.user.username != None and member.user.is_self != True and member.user.is_bot != True:
  354.                                     user_username = member.user.username
  355.                                     user_id = member.user.id
  356.  
  357.                                     db = Username("Model.db")
  358.                                     db.create_table()
  359.                                     all_username_database = db.get_list_username                    
  360.                                     if user_username not in all_username_database():
  361.                  
  362.                                           AllData = (f"{user_username}",f"{member.user.id}")
  363.                                           db.insert_data(AllData)
  364.                                           count += 1
  365.                                           db.close()
  366.                                           print(f"save username {member.user.username}")
  367.                                     else:pass
  368.  
  369.                               else:pass
  370.                   except Exception as error:print(error)
  371.                   MessageSaveUsername(chat_id,text,count)
  372.       except Exception as error:print (error)
  373.  
  374. def MessageSaveUsername(chat_id,text,count):
  375.       if count > 0:
  376.             print("end Save username")
  377.             app.send_message(chat_id,f"<b>{count}</b> <code>usernames from group {text} were added to the database</code>",parse_mode="html")
  378.             step ="None"
  379.       else:
  380.             app.send_message(chat_id,f"<code>No usernames were added to the database</code>",parse_mode="html")
  381.             step="None"
  382. #/-----------------------------------------------------------------------------------------------------------------
  383.  
  384.  
  385. #settings-----------------------------------------------------------------------------------------------------------
  386. def StartSet(chat_id,message_id):#setting -> Edit Admins - Edit Groups - Setting Addmember
  387.       global step
  388.       app.edit_message_text(chat_id,message_id,"Click the desired button to set and edit",
  389.                               reply_markup=markup([[button("Admins ?",callback_data="EditAdmins"),button("Groups ?",callback_data="EditGroups")],
  390.                               [button("Settings Addmember ?",callback_data="SettingAdd"),button("Account ?",callback_data="EditAccount")],
  391.                               [button("Comeback To Menu ? ",callback_data="ComebackToMenu")]]))
  392.       step = 'None'
  393.  
  394. def EditAdmins(chat_id,message_id):#edit admins -> AddAdmin - RemoveAdmin - ShowAdmins
  395.       global step
  396.       modir = 1569699710 #add chat_id modir
  397.       if chat_id == modir:
  398.             app.edit_message_text(chat_id,message_id,"Edit Admins",
  399.                                     reply_markup=markup([[button("Remove Admin ➖",callback_data="RemoveAdmin"),button("Add Admin ➕",callback_data="AddAdmin")],
  400.                                     [button("Show Admins",callback_data="ShowAdmins")],
  401.                                     [button("Comeback To Menu ? ",callback_data="ComebackToMenu"),button("Comeback ?",callback_data="ComebackSettings")]]))
  402.             step = 'None'
  403.  
  404. def AddAdmin(chat_id,message_id,query):
  405.       global step
  406.       app.edit_message_text(chat_id,message_id,"<code>Send us the New Admin Username</code>\n<i>For example:  </i>@username",parse_mode="html")
  407.       step = "SaveAdmin"
  408.  
  409. def SaveAdmin(chat_id,message_id,text,message):
  410.       global step
  411.       api_id, api_hash = 2624818, "9d6e5f2365a2a9867d219e869f3e3656" #api_id,"api_hash"
  412.       try:
  413.  
  414.             with Client('session_me',api_id,api_hash) as app:
  415.  
  416.                   try:
  417.                         chat = app.get_chat(f"{text[1:]}")
  418.                         Id = chat.id
  419.                         name = chat.first_name
  420.                         username = chat.username
  421.  
  422.                   except Exception as error:print(error)
  423.  
  424.  
  425.                   AllData = (f"{name}",f"{Id}",f"{username}")
  426.                   db = AdminsBot("Model.db")
  427.                   db.create_table()
  428.                   db.insert_data(AllData)
  429.                   print("save admin in admins")
  430.                   MessageSaveAdmin(chat_id,message_id,text)
  431.                   db.close()
  432.       except Exception as error:print(error)
  433.  
  434. def MessageSaveAdmin(chat_id,message_id,text):
  435.       app.send_message(chat_id,f"<code>Save {text} in Admins</code>",reply_to_message_id=message_id)
  436.      
  437. def RemoveAdmin(chat_id,message_id,query):
  438.       try:
  439.  
  440.             db = AdminsBot("Model.db")
  441.             db.create_table()
  442.             listadmins = db.get_list_admins()
  443.             db.close()
  444.             if len(listadmins) > 0:
  445.  
  446.                   keyboard = [button(f"{admin[0]}",callback_data= f"re{admin[1]}") for admin in listadmins]
  447.                   key = iter(keyboard)
  448.                   Output = [list(islice(key,elem))for elem in[2 for n in range(len(keyboard))]]
  449.  
  450.                   app.edit_message_text(chat_id,message_id,"Remove\nClick on admin name to remove",
  451.                   reply_markup=markup(Output))
  452.  
  453.             else:
  454.                   query.answer(f"not admin")
  455.                   StartSet(chat_id,message_id)
  456.       except Exception as error:print(error)
  457.  
  458. def DeleteAdmins(chat_id,message_id,query,data):
  459.       try:
  460.  
  461.             ID = (f"{data[2:]}",)
  462.             db = AdminsBot("Model.db")
  463.             db.create_table()
  464.             db.delete_admin(ID)
  465.             db.close()
  466.             query.answer(f"delete admin")
  467.             RemoveAdmin(chat_id,message_id,query)
  468.       except Exception as error:print(error)
  469.  
  470. def ShowAdmins(chat_id,message_id,query):
  471.       try:
  472.  
  473.             db = AdminsBot("Model.db")
  474.             db.create_table()
  475.             listadmins = db.get_list_admins()
  476.  
  477.             if len(listadmins) > 0:
  478.  
  479.                   keyboard = [button(f"{admin[0]}",url=f"https://t.me/{admin[2]}")for admin in listadmins]
  480.                   key = iter(keyboard)
  481.                   Output = [list(islice(key,elem))for elem in[2 for n in range(len(keyboard))]]
  482.                   app.edit_message_text(chat_id,message_id,"Admins AddMemberBot",reply_markup=markup(Output))
  483.  
  484.             else:
  485.                   query.answer(f"not admin")
  486.                   StartSet(chat_id,message_id)
  487.       except Exception as error:print(error)
  488.  
  489. def EditGroups(chat_id,message_id):#edit groups -> AddGroup - RemoveGroup - ShowGroups
  490.       app.edit_message_text(chat_id,message_id,"Edit Groups",
  491.                               reply_markup=markup([[button("Remove Group ➖",callback_data="RemoveGroup"),button("Add Group ➕",callback_data="AddGroup")],
  492.                               [button("Show Group",callback_data="ShowGroup")],
  493.                               [button("Comeback To Menu ? ",callback_data="ComebackToMenu"),button("Comeback ?",callback_data="ComebackSettings")]]))
  494.       step = 'None'
  495.  
  496. def AddGroup(chat_id,message_id):
  497.       global step
  498.       app.edit_message_text(chat_id,message_id,"<code>Send us the new Group Username</code>\n<i>For example:</i>  @username",parse_mode="html")
  499.       step = "SaveGroup"
  500.  
  501. def SaveGroup(chat_id,message_id,text,message):
  502.       api_id, api_hash = 2624818, "9d6e5f2365a2a9867d219e869f3e3656" #api_id,"api_hash"
  503.       with Client('session_me',api_id,api_hash) as app:
  504.  
  505.             try:
  506.                   chat = app.get_chat(f"{text[1:]}")
  507.                   Id = chat.id
  508.                   name = chat.title
  509.                   username = chat.username
  510.  
  511.             except Exception as error:print(error)
  512.  
  513.             AllData = (f"{name}",f"{Id}",f"{username}")
  514.             db = Groups("Model.db")
  515.             db.create_table()
  516.             db.insert_data(AllData)
  517.             db.close()
  518.             print("save group in groups")
  519.             MessageSaveGroup(chat_id,message_id,text)
  520.  
  521. def MessageSaveGroup(chat_id,message_id,text):
  522.       app.send_message(chat_id,f"save {text} in Groups",reply_to_message_id=message_id)
  523.  
  524. def RemoveGroup(chat_id,message_id,query):
  525.       try:
  526.  
  527.             db = Groups("Model.db")
  528.             db.create_table()
  529.             listgroups = db.get_list_groups()
  530.             if len(listgroups) > 0:
  531.  
  532.                   keyboard = [button(f"{group[0]}",callback_data= f"re{group[1]}") for group in listgroups]
  533.                   key = iter(keyboard)
  534.                   Output = [list(islice(key,elem))for elem in[2 for n in range(len(keyboard))]]
  535.  
  536.                   app.edit_message_text(chat_id,message_id,"Remove\nClick on group name to remove",
  537.                   reply_markup=markup(Output))
  538.  
  539.             else:
  540.                   query.answer(f"not group")
  541.                   StartSet(chat_id,message_id)
  542.       except Exception as error:print(error)
  543.  
  544. def DeleteGroups(chat_id,message_id,query,data):
  545.       try:
  546.  
  547.             ID = (f"{data[2:]}",)
  548.             db = Groups("Model.db")
  549.             db.create_table()
  550.             db.delete_group(ID)
  551.             db.close()
  552.             query.answer(f"delete Group")
  553.             RemoveGroup(chat_id,message_id,query)
  554.  
  555.       except Exception as error:print(error)
  556.  
  557. def ShowGroup(chat_id,message_id,query):
  558.  
  559.       db = Groups("Model.db")
  560.       db.create_table()
  561.       listgroups = db.get_list_groups()
  562.       print(len(listgroups))
  563.  
  564.       if len(listgroups) > 0:
  565.  
  566.             keyboard = [button(f"{group[0]}",url=f"https://t.me/{group[2]}")for group in listgroups]
  567.             key = iter(keyboard)
  568.             Output = [list(islice(key,elem))for elem in[2 for n in range(len(keyboard))]]
  569.             app.edit_message_text(chat_id,message_id,"Groups AddMemberBot",reply_markup=markup(Output))
  570.  
  571.       else:
  572.             query.answer(f"Not Group! ❌")
  573.             StartSet(chat_id,message_id)
  574.  
  575. def EditAccount(chat_id,message_id):
  576.       global step
  577.       app.edit_message_text(chat_id,message_id,"Edit Account",
  578.                               reply_markup=markup([[button("Remove Account ❌",callback_data="RemoveAccount")],
  579.                               [button("Comeback To Menu ? ",callback_data="ComebackToMenu"),button("Comeback ?",callback_data="ComebackSettings")]]))
  580.       step = 'None'
  581.  
  582. def RemoveAccount(chat_id,message_id,query):
  583.       global step
  584.       app.edit_message_text(chat_id,message_id,"Send Number")
  585.       step = "DeleteAccount"
  586.  
  587. def DeleteAccount(chat_id,message_id,text,message):
  588.       global step
  589.      
  590.       try:
  591.             phone = (f"{text}",)
  592.             db = Account("Model.db")
  593.             db.create_table()
  594.             db.delete_account(phone)
  595.             db.close()
  596.             app.send_message(chat_id,f"The account with the number {text} was removed from the list of database accounts",parse_mode='html',
  597.                               reply_to_message_id=message_id)
  598.             print(f"delete account {text}")
  599.             step = 'None'
  600.       except Exception as error:print(error)
  601.  
  602. def SettingAdd(chat_id,message_id):#SettingAdd
  603.  
  604.       app.edit_message_text(chat_id,message_id,"SettingAdd",
  605.                               reply_markup=markup([[button("Set Settings ?",callback_data="EditSettings"),button("Show Setting",callback_data="ShowSettings")],
  606.                               [button("Comeback To Menu ? ",callback_data="ComebackToMenu"),button("Comeback ?",callback_data="ComebackSettings")]]))
  607.  
  608. def ShowSettings(chat_id,message_id,query):
  609.  
  610.       db = SettingAddmember("Model.db")
  611.       db.create_table()
  612.       list_Settingss = db.get_list_Setting()
  613.      
  614.       print(list_Settingss)
  615.       if len(list_Settingss) >= 1:
  616.  
  617.             keyboard = [
  618.  
  619.                   [button("تعداد دعوت",callback_data="None"),button("استراحت اکانت ها ",callback_data="None")],
  620.                   [button(f"{list_Settingss[0][2]} ممبر",callback_data="None"),button(f"روز {list_Settingss[0][1]}",callback_data="None")],
  621.                   [button("Comeback To Menu ? ",callback_data="ComebackToMenu"),button("Comeback ?",callback_data="StartSet")]
  622.                   ]
  623.            
  624.             app.edit_message_text(chat_id,message_id,"Settings\nSettings Add Member",reply_markup=markup(keyboard))
  625.       else:
  626.             query.answer(f"Not Settings")
  627.             StartSet(chat_id,message_id)
  628.  
  629. def EditSettings(chat_id,message_id):
  630.       global step
  631.       app.send_message(chat_id,"<code>Send ActivityRange</code>\n<i>For example:</i>  <b>1 or 2 or 3 or..</b>",parse_mode='html',reply_markup=reply(selective=True))
  632.       step = "GetActivityRange"
  633.  
  634. def GetActivityRange(chat_id,message_id,text,message):
  635.       try:
  636.  
  637.             if len(text) == 5 and text[2] == ':':
  638.                   global step
  639.                   app.send_message(chat_id,"<code>Send AddRange</code>\n<i>For example:</i>  <b>10 or 20 or 30 or..</b>",parse_mode='html',reply_markup=reply(selective=True))
  640.                   step = f"GetAddRange{text}"
  641.  
  642.             elif text.isdigit():
  643.                   step = f"GetAddRange{text}"
  644.                   app.send_message(chat_id,"<code>Send AddRange</code>\n<i>For example:</i>  <b>10 or 20 or 30 or..</b>",reply_markup=reply(selective=True))
  645.  
  646.             else:
  647.                   app.send_message(chat_id,"<code>Please send correctly</code>",parse_mode='html',reply_to_message_id=message_id)
  648.       except Exception as error:print(error)      
  649.  
  650. def GetAddRange(chat_id,message_id,text,message):
  651.       global step
  652.       db = SettingAddmember("Model.db")
  653.       db.create_table()
  654.       list_setting = db.get_list_Setting()
  655.  
  656.       if len(list_setting) < 1:
  657.             InsertData = (1,f"{step[11:]}",f"{text}")
  658.             db.insert_data(InsertData)
  659.             step = 'None'
  660.             app.send_message(chat_id,f"<code>✅ Your settings have been applied</code>",parse_mode='html',reply_to_message_id=message_id)
  661.             print(f"Add settings recorded")
  662.  
  663.       elif len(list_setting) >=1:
  664.             UpdateData = (f"{step[11:]}",f"{text}")
  665.             db.update_data(UpdateData)
  666.             step = 'None'
  667.             app.send_message(chat_id,f"<code>✅ Your settings have been applied</code>",reply_to_message_id=message_id)
  668.             print(f"Add settings updated")      
  669. #/-----------------------------------------------------------------------------------------------------------
  670.  
  671. #Statistics--------------------------------------------------------------------------------------------------
  672. def Statistics(chat_id,message_id):
  673.       global step
  674.       if step == "reStatistics":
  675.             app.delete_messages(chat_id,message_id)
  676.             app.send_message(chat_id,"Activity statistics and accounts",
  677.             reply_markup=markup([[button("Activity",callback_data="Activity"),button("Accounts",callback_data="Accounts")],
  678.             [button("Comeback To Menu ? ",callback_data="ComebackToMenu")]]))
  679.       else:
  680.             app.edit_message_text(chat_id,message_id,"Activity statistics and accounts",
  681.             reply_markup=markup([[button("Activity",callback_data="Activity"),button("Accounts",callback_data="Accounts"),button("IDeas",callback_data="IDeas")],
  682.             [button("Comeback To Menu ? ",callback_data="ComebackToMenu")]]))
  683.  
  684. def Accounts(chat_id,message_id,query):
  685.       global step
  686.       db = Account("Model.db")
  687.       db.create_table()
  688.       list_phone = db.get_list_phone()
  689.       len_phone = len(list_phone)
  690.       list_healthy_account = db.get_list_healthy_account()
  691.       len_healthy = len(list_healthy_account)
  692.       list_Temporary_report = db.get_list_Temporary_report()
  693.       len_Temporary = len(list_Temporary_report)
  694.       list_Permanent_report = db.get_list_Permanent_report()
  695.       len_Permanent = len(list_Permanent_report)
  696.       list_Deleted = db.get_list_deleted_account()
  697.       len_delete = len(list_Deleted)
  698.       list_phone_Activity = db.get_list_phone_Activity()
  699.       db.close()
  700.       list_accounts_add = list()
  701.       stdelta = None
  702.       setting = None
  703.  
  704.       db = SettingAddmember("Model.db")
  705.       db.create_table()
  706.       get_list_Setting = db.get_list_Setting()
  707.       #check len settings addmember
  708.       if len(get_list_Setting) < 1:
  709.             print(f"no set setting {len(get_list_Setting)} ")
  710.             query.answer(f"❌ Not Set Settings")
  711.            
  712.       else:
  713.             print(f"len setting {len(get_list_Setting)}")
  714.             setting = get_list_Setting[0][1]
  715.             #accounts Activity
  716.             ac = 0
  717.             for Activity in list_phone_Activity:
  718.  
  719.                   lastActivity = str(Activity[1]) + ' ' + str(Activity[2])
  720.                   date = DateTime().d
  721.                   time = DateTime().t
  722.                   TimeNow = str(date) + ' ' + str(time)
  723.                   FMT = '%d-%m-%Y %H:%M:%S'
  724.                   tdeltaa = datetime.strptime(TimeNow, FMT) - datetime.strptime(lastActivity, FMT)
  725.                   stdelta= str(tdeltaa)
  726.                   print(stdelta)
  727.                   if re.search(r'(\d.*).day',stdelta):
  728.                         bet = re.findall(r'(\d.*).day',stdelta)
  729.                         print(f"bet: {bet}\n setting:{setting}")
  730.                         if bet[0] >= setting:
  731.                               ac += 1
  732.                               list_accounts_add.append(Activity[0])
  733.                         else:
  734.                               print('not account')
  735.                   else:
  736.                         list_accounts_add.append(Activity[0])
  737.  
  738.             len_list_accounts_add = len(list_accounts_add)
  739.            
  740.            
  741.             if len_phone > 0:
  742.  
  743.                   keyboard = [
  744.  
  745.                         [button("اکانت های سالم",callback_data="None"),button("اکانت ها",callback_data="None")],
  746.                         [button(f"{len_healthy}",callback_data="None"),button(f"{len_phone}",callback_data="None")],
  747.  
  748.                         [button("ریپورت های دائمی",callback_data="None"),button("ریپورت موقت",callback_data="None")],
  749.                         [button(f"{len_Permanent}",callback_data="None"),button(f"{len_Temporary}",callback_data="None")],
  750.  
  751.                         [button("حذف شده",callback_data="None"),button('اکانت های قابل استفاده',callback_data="None")],
  752.                         [button(f"{len_delete}",callback_data="None"),button(f"{ac}",callback_data="None")],
  753.  
  754.                         [button("Comeback To Menu ? ",callback_data="ComebackToMenu"),button("Comeback ?",callback_data="StartStat")]
  755.                        
  756.                   ]
  757.                        
  758.                   app.edit_message_text(chat_id,message_id,"Statistics\nStatistics Accounts",reply_markup=markup(keyboard))
  759.             else:
  760.                   step ="reStatistics"
  761.                   query.answer(f"❌ Not Account")
  762.                   Statistics(chat_id,message_id)
  763.  
  764. def Activityy(chat_id,message_id,query):
  765.  
  766.       global step
  767.       db = AddStatistics("Model.db")
  768.       db.create_table()
  769.       list_activity = db.get_list_Statistics()
  770.       db.close()
  771.  
  772.       if len(list_activity) > 0:
  773.  
  774.             keyboard = [
  775.                   [button("درصد دعوت های موفق",callback_data="None"),button("دعوت ها",callback_data="None")],
  776.                   [button(f"0",callback_data="None"),button(f"{list_activity[0][5]}",callback_data="None")],
  777.  
  778.                   [button("درخواست ها",callback_data="None"),button("دعوت های امروز",callback_data="None")],
  779.                   [button(f"{list_activity[0][4]}",callback_data="None"),button(f"{list_activity[0][3]}",callback_data="None")],
  780.  
  781.                   [button("اخرین فعالیت",callback_data="None"),button("اخرین دعوت",callback_data="None")],
  782.                   [button(f"{list_activity[0][2]}",callback_data="None"),button(f"{list_activity[0][1]}",callback_data="None")],
  783.  
  784.                   [button("Comeback To Menu ? ",callback_data="ComebackToMenu"),button("Comeback ?",callback_data="StartStat")]
  785.  
  786.             ]
  787.             app.edit_message_text(chat_id,message_id,"Statistics\nStatistics Activity",reply_markup=markup(keyboard))
  788.       else:
  789.             step ="reStatistics"
  790.             query.answer(f"Not Activity")
  791.             Statistics(chat_id,message_id)
  792.            
  793.  
  794. def IDeas(chat_id,message_id):
  795.       global step
  796.       db = Username("Model.db")
  797.       db.create_table()
  798.       list_username = db.get_list_username()
  799.       db.close()
  800.      
  801.       if len(list_username) > 0:
  802.  
  803.             keyboard = [
  804.                   [button("آیدی ها",callback_data="None")],
  805.                   [button(f"{len(list_username)}",callback_data="None")],
  806.  
  807.  
  808.                   [button("Comeback To Menu ? ",callback_data="ComebackToMenu"),button("Comeback ?",callback_data="StartStat")]
  809.  
  810.             ]
  811.             app.edit_message_text(chat_id,message_id,"Statistics\nStatistics Activity",reply_markup=markup(keyboard))
  812.       else:
  813.             step ="reStatistics"
  814.             query.answer(f"Not id")
  815.             Statistics(chat_id,message_id)
  816.      
  817. #/------------------------------------------------------------------------------------------------------------
  818.  
  819.  
  820. #Update Account Reports---------------------------------------------------------------------------------------
  821. def StartUAR(chat_id,message_id):
  822.       db = Account("Model.db")
  823.       db.create_table()
  824.       list_Account = db.get_list_phone()
  825.       Message=app.send_message(chat_id,"Start Updating Account Reports")
  826.       l = len(list_Account)
  827.       c = 0
  828.       if len(list_Account) > 0:
  829.             for account in list_Account:
  830.                   c+=1
  831.                   sleep(3)
  832.                   threading.Thread(target=SpamBot, args = [chat_id,message_id,account,c]).start()
  833.       else:
  834.             app.send_message(chat_id,"<code>To update the report status of accounts ... I do not see any accounts</code>",parse_mode='html',reply_to_message_id=message_id)
  835.       db.close()
  836. #/------------------------------------------------------------------------------------------------------------
  837.  
  838.  
  839. #Add Member---------------------------------------------------------------------------------------------------
  840. def StartAdd(chat_id,message_id,query):
  841.       global step
  842.       db = Groups("Model.db")
  843.       db.create_table()
  844.       listgroups = db.get_list_groups()
  845.       db.close()
  846.  
  847.       db = SettingAddmember("Model.db")
  848.       db.create_table()
  849.       listsettings = db.get_list_Setting()
  850.       db.close()
  851.  
  852.       lenG = len(listgroups)
  853.       lenS = len(listsettings)
  854.  
  855.       text1 = f"\
  856. <b>Add Member</b>\n\n\
  857. <code>In which group do you want to join?</code>\n\n\
  858. Click on the <b>Group</b> name \n\
  859. If the group name is not in the list, Add the group name to your groups"
  860.       text2 = f"<b>The list of groups is empty and no settings have been set</b>\n\
  861. ? <code>Register your group</code>\n\
  862. ? <code>Save the relevant invitation settings</code>"
  863.       text3 = f"<b>Settings not set</b>\n\
  864. ? <code>Save the relevant invitation settings</code>"
  865.       text4 = f"<b>The list of groups is empty</b>\n\
  866. ? <code>Register your group</code>"
  867.  
  868.       if lenG > 0 and lenS > 0:
  869.  
  870.             other = [[button("other groups",callback_data="OtherGroups")]]
  871.             keyboard = [button(f"{group[0]}",callback_data= f"ad{group[1]}") for group in listgroups]
  872.             key = iter(keyboard)
  873.             Output = [list(islice(key,elem))for elem in[2 for n in range(len(keyboard))]]
  874.  
  875.             app.edit_message_text(chat_id,message_id,text1,
  876.             parse_mode="html",reply_markup=markup(Output))
  877.  
  878.       elif lenG < 1 and lenS < 1:
  879.             app.edit_message_text(chat_id,message_id,text2,parse_mode='html')
  880.       elif lenG > 0 and lenS < 1:
  881.             app.edit_message_text(chat_id,message_id,text3,parse_mode='html')
  882.       elif lenG < 1 and lenS > 0:
  883.             app.edit_message_text(chat_id,message_id,text4,parse_mode='html')
  884.       step = 'None'
  885.  
  886. def AddToGroups(chat_id,message_id,query,data):
  887.       global step
  888.       app.edit_message_text(chat_id,message_id,f"<code> How Many Accounts Do You want to work with? </code>\n<i>For example:</i>  <b>6</b> ",parse_mode="html")
  889.       step = f"GettActivityNumber{data}"
  890.  
  891. def GettActivityNumber(chat_id,message_id,text,message):
  892.       global step
  893.       UG = step[20:] #username Group
  894.       update = (f"{str(UG)}",)
  895.    
  896.       db = Groups("Model.db")
  897.       db.create_table()
  898.       usergroup = db.get_list_username_groups(update)
  899.  
  900.       AN = text      
  901.       step ='None'
  902.       GeActivityAccounts(chat_id,message_id,usergroup,AN)
  903.  
  904. def GeActivityAccounts(chat_id,message_id,usergroup,AN):
  905.       db = Account("Model.db")
  906.       db.create_table()
  907.       list_phone_Activity = db.get_list_phone_Activity()
  908.       list_accounts_add = list()
  909.      
  910.       for Activity in list_phone_Activity:
  911.  
  912.             db = SettingAddmember("Model.db")
  913.             db.create_table()
  914.             get_list_Setting = db.get_list_Setting()
  915.             try:
  916.                   setting = get_list_Setting[0][1]
  917.            
  918.             except:pass
  919.            
  920.             lastActivity = str(Activity[1]) + ' ' + str(Activity[2])
  921.             date = DateTime().d
  922.             time = DateTime().t
  923.             TimeNow = str(date) + ' ' + str(time)
  924.             FMT = '%d-%m-%Y %H:%M:%S'
  925.             tdeltaa = datetime.strptime(TimeNow, FMT) - datetime.strptime(lastActivity, FMT)
  926.            
  927.             if re.search(r'(\d.*).day',str(tdeltaa)):
  928.                   bet = re.findall(r'(\d.*).day',str(tdeltaa))
  929.                   if bet[0] >= setting:
  930.                         list_accounts_add.append(Activity[0])
  931.                   else:
  932.                         print('not account')
  933.             else:
  934.                   pass
  935.      
  936.       if len(list_accounts_add) >= int(AN):
  937.             list_Account = list_accounts_add[:int(AN)]
  938.             print(len(list_Account))
  939.             ForAddChatMember(chat_id,message_id,list_Account,usergroup)
  940.       else:
  941.             MessageThree(chat_id,message_id)
  942.  
  943. def ForAddChatMember(chat_id,message_id,list_Account,usergroup):
  944.      
  945.       for account in list_Account:
  946.             print(f"Start Add -> [{account}]")
  947.             sleep(30)
  948.             threading.Thread(target=AddMemberToGroup, args = [account,usergroup,chat_id,message_id]).start()
  949.            
  950.      
  951. def AddMemberToGroup(account,usergroup,chat_id,message_id):
  952.       db = SettingAddmember("Model.db")
  953.       db.create_table()
  954.       list_setting = db.get_list_Setting()
  955.       db.close()
  956.       db = Username("Model.db")
  957.       db.create_table()
  958.       list_username = db.get_list_username()
  959.  
  960.       list_user = [x for x in list_username]
  961.       activity = int(list_setting[0][2])  
  962.       today_send_success = 0
  963.       today_send_unsuccess = 0
  964.       F = 0
  965.       list_group_username = list()
  966.       try:
  967.      
  968.         api_id, api_hash = 2624818, "9d6e5f2365a2a9867d219e869f3e3656" #api_id,"api_hash"
  969.         app = Client(f'sessions/phone{account}',api_id,api_hash)
  970.         app.start()
  971.      
  972.  
  973.         if len(list_user) <= 1:
  974.               MessageTwo(chat_id,message_id)
  975.         else:
  976.               try:
  977.                     app.join_chat(usergroup[0])
  978.               except Exception as error:
  979.                     print(f"[{account}]\tWhen Join Chat: {error}")
  980.  
  981.               try:
  982.                     for member in app.iter_chat_members(usergroup[0]):
  983.                           if member.user.username != None and member.user.is_self != True and member.user.is_bot != True:
  984.                                 list_group_username.append(member.user.username)
  985.                           else:pass
  986.  
  987.               except Exception as error:print(error)
  988.  
  989.               while today_send_success != activity:
  990.                     user_id = choice(db.get_list_username())
  991.                     time.sleep(5)
  992.                    
  993.                     try:
  994.                    
  995.                           if user_id not in list_group_username:
  996.                                 app.add_chat_members(usergroup[0],user_id )
  997.                           else:pass
  998.                     except errors.Forbidden as error:
  999.                           deleteusername = (f"{user_id}",)
  1000.                           db.delete_username(deleteusername)
  1001.                           print(f"Error [{account}] {error}")
  1002.                           today_send_unsuccess += 1
  1003.                           continue
  1004.                     except errors.PeerFlood as error:
  1005.                           today_send_unsuccess += 1
  1006.                           F += 1
  1007.                           print(f"Error ({F}) [{account}] {error}")
  1008.                           if F == 3:
  1009.                                 print(f"Add [{account}]  Completed.Due to Limitation")
  1010.                                 break
  1011.                           else:pass
  1012.                     except errors.FloodWait as error:
  1013.                           print(f"Error [{account}] {error}")
  1014.                           today_send_unsuccess += 1
  1015.                           FW +=1
  1016.                           if FW == 3:
  1017.                             break
  1018.                           else:pass
  1019.                     except errors.BadRequest as error:
  1020.                           print(f"Error [{account}] {error}")
  1021.  
  1022.                     except Exception as error:
  1023.                           print(f"Error Exception [{account}] {error}")
  1024.                           today_send_unsuccess += 1
  1025.                     else:
  1026.                           deleteusername = (f"{user_id}",)
  1027.                           db.delete_username(deleteusername)
  1028.                           today_send_success += 1
  1029.                           print(f"[{account}]\tsucessfull: {today_send_success}")
  1030.  
  1031.               MessageAddMember(chat_id,message_id,today_send_success,today_send_unsuccess,account)
  1032.       except errors.SessionRevoked as error:
  1033.             print(f"Error 1 {error} Phone: {account}")
  1034.             DeleteSessionRevoked(chat_id,message_id,account)
  1035.            
  1036.       except errors.UserDeactivated as error:
  1037.             print(f"Error 2 {error} Phone: {account}")
  1038.             UpdateDeleteAccount(chat_id,message_id,account)
  1039.      
  1040.       except errors.AuthKeyUnregistered as error:
  1041.             print(f"Error 3 {error} Phone: {account}")
  1042.             DeleteSessionRevoked(chat_id,message_id,account)
  1043.                  
  1044.       except Exception as error:
  1045.             print(f"Error 4 {error} Phone: {account}")
  1046.            
  1047. def DeleteSessionRevoked(chat_id,message_id,account):
  1048.       db = Account("Model.db")
  1049.       db.create_table()
  1050.       db.delete_account((account,))
  1051.       db.close()
  1052.       app.send_message(chat_id,f"<b>This account[<code>{account}</code>] can not be activated due to logout.</b>\n\
  1053. <code>Deleted from the database. Please re-enter this number in the bot</code>"
  1054.      
  1055.       ,parse_mode="html")
  1056.      
  1057. def UpdateDeleteAccount(chat_id,message_id,account):
  1058.       db = Account("Model.db")
  1059.       db.create_table()
  1060.       db.update_delete(("True",account))
  1061.       db.close()
  1062.       app.send_message(chat_id,f"<b>This account[<code>{account}</code>] was deleted by Telegram</b>",parse_mode="html")
  1063.  
  1064. def MessageAddMember(chat_id,message_id,today_send_success,today_send_unsuccess,account):
  1065.       app.send_message(chat_id,f"<b>Account</b><code>{account}</code><b> did {today_send_success} successful and {today_send_unsuccess}  unsuccessful</b>",parse_mode="html")
  1066.      
  1067.       SaveAddsAccount(chat_id,message_id,today_send_success,today_send_unsuccess,account)
  1068.  
  1069. def SaveAddsAccount (chat_id,message_id,today_send_success,today_send_unsuccess,account):
  1070.  
  1071.       db = Account("Model.db")
  1072.       db.create_table()
  1073.       aaccount = (f"{account}",)
  1074.       list_Addaccount = db.get_SuccessfulAdds_UnSuccessfulAdds_Adds(aaccount)
  1075.       date = DateTime().d
  1076.       time = DateTime().t
  1077.       LastAdd,LastActivity = date,time
  1078.       SuccessfulAdds = int(list_Addaccount[0][0])+today_send_success
  1079.       UnSuccessfulAdds = int(list_Addaccount[0][1])+today_send_unsuccess
  1080.       Adds = int(list_Addaccount[0][2])+today_send_success
  1081.       db.close()
  1082.       try:
  1083.             db = Account("Model.db")
  1084.             AllData = (f"{LastAdd}",f"{LastActivity}",f"{SuccessfulAdds}",f"{UnSuccessfulAdds}",f"{Adds}",account)
  1085.             db.update_account(AllData)
  1086.             db.close()
  1087.             print(f"SaveAddsAccount           -> ({account})")
  1088.             SaveAddStatistics(chat_id,message_id,today_send_success,today_send_unsuccess,account,date,time)
  1089.  
  1090.       except Exception as error:
  1091.             print(f"Error:{error}")
  1092.  
  1093.  
  1094. def SaveAddStatistics(chat_id,message_id,today_send_success,today_send_unsuccess,account,date,time):
  1095.  
  1096.       db = AddStatistics("Model.db")
  1097.       db.create_table()
  1098.       list_AddStatistics = db.get_list_Statistics()
  1099.  
  1100.       if len(list_AddStatistics) < 1:
  1101.  
  1102.             LastAdd, LastActivity = date,time
  1103.             RequestedAdditions = 1
  1104.             Adds = today_send_success
  1105.             AddToday = today_send_success
  1106.             PercentAddsSuccessful = (today_send_success * 100 ) / 10
  1107.             try:
  1108.  
  1109.                   AllData = (f"{PercentAddsSuccessful}", f"{LastAdd}", f"{LastActivity}", f"{AddToday}", f"{RequestedAdditions}", f"{Adds}")
  1110.                   db.insert_data(AllData)
  1111.                   db.close()
  1112.                   print("insert   SaveAddStatistics")
  1113.             except Exception as error:
  1114.                   print(f"Error:{error}")
  1115.  
  1116.       elif len(list_AddStatistics) >= 1:
  1117.  
  1118.             LastAdd, LastActivity = date,time
  1119.  
  1120.             Last_timeAdd_dateAdd = db.get_list_Statistics()
  1121.             lastActivity = str(Last_timeAdd_dateAdd[0][1]) + ' ' + str(Last_timeAdd_dateAdd[0][2])
  1122.             TimeNow = str(date) + ' ' + str(time)
  1123.             FMT = '%d-%m-%Y %H:%M:%S'
  1124.             tdeltaa = datetime.strptime(TimeNow, FMT) - datetime.strptime(lastActivity, FMT)
  1125.            
  1126.             if re.search(r'(\d).day',str(tdeltaa)):
  1127.                   bet = re.findall(r'(\d).day',str(tdeltaa))
  1128.                   if int(bet[0]) >= 1:
  1129.                         AddToday = today_send_success
  1130.                   else:
  1131.                         print(f"else:{bet[0]}")
  1132.             else:
  1133.                   AddToday = int(list_AddStatistics[0][3])+ today_send_success
  1134.  
  1135.  
  1136.             RequestedAdditions =  int(list_AddStatistics[0][4]) + 1
  1137.             Adds = int(list_AddStatistics[0][5])+ today_send_success
  1138.             PercentAddsSuccessful = (today_send_success * 100 ) / 10
  1139.             try:
  1140.  
  1141.                   AllData = (f"{PercentAddsSuccessful}", f"{LastAdd}", f"{LastActivity}", f"{AddToday}", f"{RequestedAdditions}", f"{Adds}",account)
  1142.                   db.update_data(AllData)
  1143.                   print(f"Update SaveAddStatistics  -> ({account})")
  1144.                   db.close()
  1145.             except Exception as error:
  1146.                   print(f"Error:{error}")
  1147. #/-------------------------------------------------------------------------------------------------------------
  1148.  
  1149.                  
  1150. app.start()
  1151. print("runing..")
  1152.  
  1153. idle()
  1154. app.stop()