Advertisement
Guest User

Untitled

a guest
May 22nd, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.40 KB | None | 0 0
  1. from pyrogram import Client, Filters, Emoji
  2.  
  3. import locale
  4. import time, schedule
  5. import threading
  6. import datetime
  7. import pytz
  8. import re
  9. import os
  10. import sys
  11. import psutil
  12. import logging
  13. from random import randint
  14. import random
  15. import json
  16.  
  17. app = Client(
  18. "Anatras02"
  19. )
  20.  
  21. countdown=dict()
  22.  
  23. with open('countdown.json', 'r') as fp:
  24.     countdown = json.load(fp)
  25.  
  26.  
  27. locale.setlocale(locale.LC_TIME, "it_IT.utf8")
  28.  
  29. running = True
  30.  
  31. def SaveJson():
  32.     with open('countdown.json', 'w') as fp:
  33.         json.dump(countdown, fp,sort_keys=True, indent=4)
  34.  
  35. def startJob():
  36.     while running==True:
  37.         schedule.run_pending()
  38.         time.sleep(1)
  39.  
  40.  
  41. def job():
  42.     print("Primo!")
  43.     app.send_message(-1001217515072,"Primo")
  44.     app.send_message(-1001120221948,"Primo")
  45.     app.send_message(-1001275441008,"Primo")
  46.     app.send_message(-1001146498129,"Primo")
  47.     app.send_message(-1001257654240,"Primo")
  48.  
  49. def Buongiorno():
  50.     print("Buongiornissimo Kaffeeeee!1!!11!")
  51.     random.seed(datetime.datetime.now().minute)
  52.     randomBuongiorno=randint(1,3)
  53.     if randomBuongiorno==1:
  54.         app.send_message(270223153,"Buongiornissimo")
  55.     elif randomBuongiorno==2:
  56.         app.send_message(270223153,"Buondì")
  57.     else:
  58.         app.send_message(270223153,"Buongiorno"+Emoji.GRINNING_FACE_WITH_SMILING_EYES)
  59.  
  60.     app.send_message(-1001217515072,"Buongiorno "+Emoji.GRINNING_FACE_WITH_SMILING_EYES)
  61.  
  62. def AggiornaCounter(name):
  63.     try:
  64.         countdown[name]-=1
  65.     except KeyError:
  66.         schedule.clear(name)
  67.     SaveJson()
  68.     if countdown[name]<1:
  69.         schedule.clear(name)
  70.         del countdown[name]
  71.  
  72. for i in countdown:
  73.     schedule.every().day.at("09:00").do(AggiornaCounter, i).tag(i)    
  74.    
  75.  
  76. schedule.every().day.at("15:00").do(job)
  77. schedule.every().day.at("21:15").do(Buongiorno)
  78.  
  79. t1 = threading.Thread(target=startJob)
  80. t1.start()
  81.  
  82. @app.on_message(Filters.me&Filters.command(["id"]))
  83. def getChatId(client,message):
  84.     app.send_message(message.chat.id,"Chat id: "+"`"+str(message.chat.id)+"`")
  85.  
  86. @app.on_message(Filters.command(["calcola"]))
  87. def Calcola(client,message):
  88.     rx = r'/calcola\s+((\d+)([/]?[*]?[+]?[-]?)(\d+))'
  89.     mo = re.match(rx,message.text)
  90.     if(mo):
  91.         app.send_message(message.chat.id,"Risultato: `"+str(eval(mo.group(1)))+"`")
  92.     else:
  93.         message.reply("Ao, formato sbagliato")
  94.  
  95. @app.on_message(Filters.me&Filters.command(["restart"]))
  96. def restart(client,message):
  97.     app.send_message(message.chat.id,"Mi sto riavviando "+Emoji.GRINNING_FACE_WITH_SMILING_EYES)
  98.  
  99.     try:
  100.         p = psutil.Process(os.getpid())
  101.         for handler in p.get_open_files() + p.connections():
  102.             os.close(handler.fd)
  103.     except Exception as e:
  104.         logging.error(e)
  105.  
  106.     python = sys.executable
  107.     os.execl(python, python, "\"{}\"".format(sys.argv[0]))
  108.  
  109. @app.on_message(Filters.command(["palindroma"]))
  110. def Palindroma(client,message):
  111.     rx=r'/palindroma\s+(\w+)'
  112.     mo=re.match(rx,message.text)
  113.     if mo:
  114.         mo.group(1)
  115.         if mo.group(1).lower() == mo.group(1).lower()[::-1]:
  116.             message.reply("La parola `"+mo.group(1)+"` **è** palindroma")
  117.         else:
  118.             message.reply("La parola `"+mo.group(1)+"` **non** è palindroma")
  119.  
  120.     else:
  121.         message.reply("Devi inserire una parola!")
  122.  
  123. @app.on_message(Filters.command(["orari"]))
  124. def Orario(client,message):
  125.     orarioLasVegas = datetime.datetime.now(pytz.timezone('America/Los_Angeles'))
  126.     orarioIta=datetime.datetime.now(pytz.timezone('Europe/Rome'))
  127.     app.send_message(message.chat.id,"Nel **Nevada, USA ** sono le "+str(orarioLasVegas.hour)+" e "+str(orarioLasVegas.minute)+" minuti del "+orarioLasVegas.strftime("%d %B"))
  128.     app.send_message(message.chat.id,"In **Italia** sono le "+str(orarioIta.hour)+" e "+str(orarioIta.minute)+" minuti del "+orarioIta.strftime("%d %B"))
  129.  
  130. @app.on_message(Filters.command(["dadoanatroso"]))
  131. def dado(client,message):
  132.     rx=r'/dadoanatroso\s+(\d+)'
  133.     mo=re.match(rx,message.text)
  134.     if mo:
  135.         dado=randint(1,int(mo.group(1)))
  136.         app.send_message(message.chat.id,"@"+message.from_user.username+" hai appena tirato un dado a **"+mo.group(1)+"** facce.\nÈ uscito il numero **"+str(dado)+"**")
  137.     else:
  138.         dado=randint(1,6)
  139.         app.send_message(message.chat.id,"@"+message.from_user.username+" hai appena tirato un dado a **6** facce.\nÈ uscito il numero **"+str(dado)+"**")
  140.  
  141. @app.on_message(Filters.command(["countdown"])&Filters.me)
  142. def StartCountdown(client,message):
  143.     istanceName=message.command[1].split(".")
  144.     istanceName=" ".join(str(x) for x in istanceName)
  145.     if istanceName not in countdown:
  146.         date=message.command[2].split("/")
  147.         timeNow=datetime.datetime.now(pytz.timezone('America/Los_Angeles'))
  148.         timeToUse=datetime.datetime(timeNow.year,timeNow.month,timeNow.day,0,0,0,0,pytz.utc)
  149.         dateEvent=datetime.datetime(int(date[2]),int(date[1]),int(date[0]),0,0,0,0,pytz.utc)
  150.         try:
  151.             deltaTime=dateEvent-timeToUse
  152.             deltaTime=deltaTime.days
  153.             if deltaTime==0:
  154.                 app.send_message(message.chat.id,"Non posso inserire un evento che è oggi "+Emoji.CRYING_FACE)
  155.             elif deltaTime<0:
  156.                 app.send_message(message.chat.id,"Non posso inserire un evento in una data passata "+Emoji.CRYING_FACE)
  157.             elif deltaTime==1:
  158.                 app.send_message(message.chat.id,"Evento inserito! Manca **"+str(deltaTime)+"** giorno a "+istanceName)
  159.                 SaveJson()
  160.                 countdown[istanceName] = dict()
  161.                 countdown[istanceName]=deltaTime
  162.                 schedule.every().day.at("09:00").do(AggiornaCounter, istanceName).tag(istanceName)
  163.             else:
  164.                 app.send_message(message.chat.id,"Evento inserito! Mancano **"+str(deltaTime)+"** giorni a "+istanceName)
  165.                 SaveJson()
  166.                 countdown[istanceName] = dict()
  167.                 countdown[istanceName]=deltaTime
  168.                 schedule.every().day.at("09:00").do(AggiornaCounter, istanceName).tag(istanceName)
  169.            
  170.         except ValueError:
  171.             app.send_message(message.chat.id,"__Formattazione data sbagliata!__ "+Emoji.CRYING_FACE)
  172.     else:
  173.         app.send_message(message.chat.id,"Questo evento è già presente, non posso inserire duplicati "+Emoji.CRYING_FACE)
  174.  
  175. @app.on_message(Filters.command(["listaCountdown"])&Filters.me)
  176. def ListaCountdown(client,message):
  177.     countdown=dict(sorted(countdown.items(),key=lambda a: a[1]))
  178.     res = "\n".join(("__{}__: {}".format(*i) for i in countdown.items()))
  179.     if any(key in countdown for key in countdown):
  180.         app.send_message(message.chat.id,"**Giorni mancanti a:**\n"+res)
  181.     else:
  182.         app.send_message(message.chat.id,"Non ci sono eventi programmati")
  183.  
  184. @app.on_message(Filters.command(["cancellaCountdown"])&Filters.me)
  185. def CancellaCountdown(client,message):
  186.     istanceName=message.command[1].split(".")
  187.     istanceName=" ".join(str(x) for x in istanceName)
  188.     if istanceName=="tutti":
  189.         countdown.clear()
  190.     else:
  191.         try:
  192.             del countdown[istanceName]
  193.             app.send_message(message.chat.id,"Countdown __"+message.command[1]+"__ eliminato")
  194.             schedule.clear(istanceName)
  195.         except (KeyError,IndexError):
  196.             app.send_message(message.chat.id,"Questo countdown non esiste")
  197.     SaveJson()
  198.  
  199. app.run()
  200.  
  201. running = False
  202. t1.join()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement