Advertisement
Hansubaruukun

Example.py

Nov 8th, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 20.91 KB | None | 0 0
  1. ##########################################################################################################################################  Python V0.3.5
  2. ###  Examplebot
  3. ###  Script Sederhana & dasar untuk pemula
  4. ###  Creator : Hansubaruukun
  5. ###  
  6. ###  Find me at      
  7. ###    hanteams.chatango.com
  8. ###            or roombebas.chatango.com
  9. ###  
  10. ###   jika anda butuh bantuan tentang bot jangan segan tanya sama ane .. karna ane juga dulu newbie sama seperti anda xD
  11. #################################################################################################################
  12. import ch
  13. import random
  14. import sys
  15. import re
  16. import json
  17. import time
  18. import datetime
  19. import os
  20. import urllib
  21. from xml.etree import cElementTree as ET
  22. if sys.version_info[0] > 2:
  23.   import urllib.request as urlreq
  24. else:
  25.   import urllib2 as urlreq
  26.  
  27. global bahasa, key
  28. key = "keysimi" #key api simsimnya
  29. bahasa = "en"
  30.  
  31. def set(x):
  32.     global bahasa
  33.     bahasa = x
  34.    
  35. def SimSimi(kalimat):
  36.     g = "sorry im tired ;("
  37.     kata = kalimat.replace(" ","+")
  38.     try:
  39.         data = urllib.request.urlopen("http://sandbox.api.simsimi.com/request.p?key=%s&lc=%s&ft=1.0&text=%s" % (key, bahasa, kata)).read().decode('utf-8')
  40.         jsondata = json.loads(data)
  41.         respon = jsondata["response"]
  42.         if "I HAVE NO RESPONSE" in respon:
  43.             respon = g
  44.     except Exception as e:
  45.         respon = g
  46.     return respon
  47.  
  48. botname = 'XXXXX' ##isi id yang mau lu jadikan bot
  49. password = 'XXXXX' ##isi paswordnya
  50.  
  51.  
  52. ##nick names
  53. def sntonick(username):
  54.     user = username.lower()
  55.     if user in nicks:
  56.         nick = json.loads(nicks[user])
  57.         return nick
  58.     else:
  59.         return user
  60.  
  61. ## DEFINITIONS
  62. ###Buat text atau notes seperti ini           http://prntscr.com/d4ocdq
  63. ##nicks
  64. nicks=dict()#empty list
  65. f=open ("nicks.txt","r")#r=read w=right
  66. for line in f.readlines():#loop through eachlinimporte and read each line
  67.     try:#try code
  68.         if len(line.strip())>0:#strip the whitespace checkgreater than 0
  69.             user , nick = json.loads(line.strip())
  70.             nicks[user] = json.dumps(nick)
  71.     except:
  72.         print("[Error]Can't load nick %s" % line)
  73. f.close()
  74. ##Rooms
  75. rooms = []
  76. f = open("rooms.txt", "r") # read-only
  77. for name in f.readlines():
  78.   if len(name.strip())>0: rooms.append(name.strip())
  79. f.close()
  80. ##owners
  81. owners = []
  82. try:
  83.     file = open("owners.txt", "r")
  84.     for name in file.readlines():
  85.         if len(name.strip()) > 0:
  86.             owners.append(name.strip())
  87.     print("[INFO]Owners loaded...")
  88.     file.close()
  89. except:
  90.     print("[ERROR]no file named owners")
  91.     print("2 second to read the error")
  92.     time.sleep(2)
  93.     exit()
  94. time.sleep(1)
  95.  
  96. ###admin
  97. admin = []
  98. try:
  99.     file = open("admin.txt", "r")
  100.     for name in file.readlines():
  101.         if len(name.strip()) > 0:
  102.             admin.append(name.strip())
  103.     print("[INFO]Admin loaded...")
  104.     file.close()
  105. except:
  106.     print("[ERROR]no file named admin")
  107.     print("2 second to read the error")
  108.     time.sleep(2)
  109.     exit()
  110. time.sleep(1)
  111. ##archknight
  112. archknight = []
  113. try:
  114.     file = open("archknight.txt", "r")
  115.     for name in file.readlines():
  116.         if len(name.strip()) > 0:
  117.             archknight.append(name.strip())
  118.     print("[INFO]archknight loaded...")
  119.     file.close()
  120. except:
  121.     print("[ERROR]no file named archknight")
  122.     print("2 second to read the error")
  123.     time.sleep(2)
  124.     exit()
  125. time.sleep(1)
  126. ##whitelist
  127. whitelist = []
  128. try:
  129.     file = open("whitelist.txt", "r")
  130.     for name in file.readlines():
  131.         if len(name.strip()) > 0:
  132.             whitelist.append(name.strip())
  133.     print("[INFO]whitelist loaded...")
  134.     file.close()
  135. except:
  136.     print("[ERROR]no file named whitelist")
  137.     print("2 second to read the error")
  138.     time.sleep(2)
  139.     exit()
  140. time.sleep(1)
  141.  
  142. #END#
  143. #Dlist
  144. dlist = []
  145. f = open("dlist.txt", "r") # read-onlyimport
  146. for name in f.readlines():
  147.   if len(name.strip())>0: dlist.append(name.strip())
  148. f.close()
  149. #END#
  150. #SN TRY
  151. sn = dict()
  152. try:
  153.   f = open('note.txt','r')
  154.   sn = eval(f.read())
  155.   f.close()
  156. except:pass
  157.  
  158. ## Send Notes
  159. sasaran = dict()
  160. f = open ("notes.txt", "r") #read-only
  161. for line in f.readlines():
  162.   try:
  163.     if len(line.strip())>0:
  164.       to, body, sender = json.loads(line.strip())
  165.       sasaran[to] = json.dumps([body, sender])
  166.   except:
  167.     print("[Error] Notes load fails : %s" % line)
  168. f.close()
  169. # SN Notifs
  170. notif = []
  171. f = open("notif.txt", "r")
  172. for name in f.readlines():
  173.   if len(name.strip())>0: notif.append(name.strip())
  174. f.close
  175.  
  176. blacklist = []
  177. f = open("blacklist.txt", "r")
  178. for name in f.readlines():
  179.   if len(name.strip())>0: blacklist.append(name.strip())
  180. f.close()
  181.  
  182. ##Buat Module Dasar untuk perintah
  183. ### Gua kasih contoh (bonus) yaitu : youtube search selebihnya buat sendiri
  184.  
  185. def yt(args):
  186.   """
  187.  #In case you don't know how to use this function
  188.  #type this in the python console:
  189.  >>> tube("pokemon dash")
  190.  #and this function would return this thing:
  191.  {'title': 'TAS (DS) Pokémon Dash - Regular Grand Prix', 'descriptions': '1st round Grand Prix but few mistake a first time. Next Hard Grand Prix will know way and few change different Pokémon are more faster and same course Cup.', 'uploader': 'EddieERL', 'link': 'http://www.youtube.com/watch?v=QdvnBmBQiGQ', 'videoid': 'QdvnBmBQiGQ', 'viewcount': '2014-11-04T15:43:15.000Z'}
  192.  """
  193.   search = args.split()
  194.   url = urlreq.urlopen("https://www.googleapis.com/youtube/v3/search?q=%s&part=snippet&key=AIzaSyBSnh-sIjd97_FmQVzlyGbcaYXuSt_oh84" % "+".join(search))
  195.   udict = url.read().decode('utf-8')
  196.   data = json.loads(udict)
  197.   rest = []
  198.   for f in data["items"]:
  199.     rest.append(f)
  200.  
  201.   d = random.choice(rest)
  202.   link = "http://www.youtube.com/watch?v=" + d["id"]["videoId"]
  203.   videoid = d["id"]["videoId"]
  204.   title = d["snippet"]["title"]
  205.   uploader = d["snippet"]["channelTitle"]
  206.   descript = d["snippet"]['description']
  207.   count    = d["snippet"]["publishedAt"]
  208.   return "Result: %s <br/><br/><br/><br/><br/><br/><br/><br/><font color='#ffcc00'><b>%s</b></font><br/><font color='#ff0000'><b>Uploader</b></font>:<b> %s</b><br/><font color='#ff0000'><b>Uploaded on</b></font>: %s<br/><font color='#ff0000'><b>Descriptions</b></font>:<i> %s ...</i><br/> " % (link, title, uploader, count, descript[:200])
  209.  
  210. ### Set color untuk bot elu
  211.  
  212.  
  213. class TestBot(ch.RoomManager):
  214.  
  215.   def onInit(self):
  216.     self.setNameColor("FFFFFF")
  217.     self.setFontColor("FF0000")
  218.     self.setFontFace("1")
  219.     self.setFontSize(11)
  220.     self.enableBg()
  221.     self.enableRecording()
  222.  
  223. ##Connecting
  224.  
  225.   def onConnect(self, room):
  226.     print("Connected")
  227.  
  228.   def onReconnect(self, room):
  229.     print("Reconnected")
  230.  
  231.   def onDisconnect(self, room):
  232.     print("Disconnected")
  233.  
  234.  #################################################################
  235.   ###  untuk mengatur level acces bot elu
  236.   #################################################################
  237.   def getAccess(self, user):
  238.     if user.name in owners: return 4 # Owners
  239.     elif user.name in admin: return 3 # Admins
  240.     elif user.name in archknight: return 2 # Arch Knight
  241.     elif user.name in whitelist: return 1
  242.     elif user.name in dlist: return 0
  243.     else: return 0
  244.  
  245. ######### Untuk pesan yang ingin dijawab lu
  246.  def onMessage(self, room, user, message):
  247.    try:
  248.     msgdata = message.body.split(" ",1)
  249.     if len(msgdata) > 1:
  250.       cmd, args = msgdata[0], msgdata[1]
  251.     else:
  252.       cmd, args = msgdata[0],""
  253.       cmd=cmd.lower()
  254.     global lockdown
  255.     global newnum
  256.     print(user.name+" - "+message.body)
  257.     if user.name in notif:
  258.         room.message(user.name+", you got ("+str(len(sn[user.name]))+") messages unread. Do irn to read them")
  259.         notif.remove(user.name)
  260.     if user == self.user: return
  261.     if "rere" == message.body:
  262.      if self.getAccess(user) >= 1 or room.getLevel(user) > 0 and not user.name in blacklist:
  263.       room.message (random.choice(["wuts? "]),True)
  264.     if "kacang" == message.body:
  265.      if self.getAccess(user) >= 4:
  266.       room.message (random.choice(["Kacang adalah makanan yang enak, tapi kalo dikacangin beda lagi ceritanya "]),True)    
  267.     if "test" == message.body:
  268.      if self.getAccess(user) >= 1 or room.getLevel(user) > 0 and not user.name in blacklist:
  269.       room.message (random.choice(["Kacang Polong"+"@"sntonick(user.name)+ " :D "]),True)
  270.     if "maid" == message.body:
  271.      if self.getAccess(user) >= 1 or room.getLevel(user) > 0 and not user.name in blacklist:
  272.       room.message (random.choice(["Ja?, ada yang bisa dibantu "+sntonick(user.name)+ " ? "]),True)
  273.     if "natsuru" == message.body:
  274.      if self.getAccess(user) >= 1 or room.getLevel(user) > 0 and not user.name in blacklist:
  275.       room.message (random.choice(["Ja?, ada yang bisa dibantu "+sntonick(user.name)+ " ? "]),True)
  276.     if "oyasumi" == message.body:
  277.      if self.getAccess(user) >= 1 or room.getLevel(user) > 0 and not user.name in blacklist:
  278.       room.message("Oyasumi "+sntonick(user.name)+ " ^o^ ")
  279.     if "ohayou" == message.body:
  280.      if self.getAccess(user) >= 1 or room.getLevel(user) > 0 and not user.name in blacklist:
  281.       room.message("Ohayou "+sntonick(user.name)+ " ^o^ ")
  282.     if "konnichiwa" == message.body:
  283.      if self.getAccess(user) >= 1 or room.getLevel(user) > 0 and not user.name in blacklist:
  284.       room.message("Konnichiwa "+sntonick(user.name)+ " ^o^ "),True
  285.     if "konbanwa" == message.body:
  286.      if self.getAccess(user) >= 1 or room.getLevel(user) > 0 and not user.name in blacklist:
  287.       room.message("Konbanwa "+sntonick(user.name)+ " ^o^ ")
  288.     if "afk" in message.body:
  289.      if self.getAccess(user) >= 1 or room.getLevel(user) > 0 and not user.name in blacklist:
  290.       room.message (random.choice(["See ya, jangan lama lama "+sntonick(user.name)+" :) ",]),True)
  291.     if "brb" in message.body:
  292.      if self.getAccess(user) >= 1 or room.getLevel(user) > 0 and not user.name in blacklist:
  293.       room.message (random.choice(["dada Bos "+sntonick(user.name)+" :) ",]),True)
  294.     if "off" in message.body:
  295.      if self.getAccess(user) >= 1 or room.getLevel(user) > 0 and not user.name in blacklist:
  296.       room.message (random.choice(["Bye "+sntonick(user.name)+" :D ",]),True)
  297.     if "fakyu natsuru" in message.body:
  298.       if self.getAccess(user) >= 1 or room.getLevel(user) > 0 and not user.name in blacklist:
  299.         room.message (random.choice(["Fakyu "+sntonick(user.name)+" 凸(⊙▂⊙✖ ) !! ",]),True)
  300.     if message.body == "": return  
  301.     if message.body[0] in ["ganti sama prefix lu"]:  
  302.       data = message.body[1:].split(" ", 1))
  303.       if len(data) > 1:
  304.         cmd, args = data[0], data[1]
  305.       else:
  306.         cmd, args = data[0], ""
  307.  
  308.  
  309.  
  310.     ##untuk mengakses room level dll yang diduduki bot lu
  311.       if self.getAccess(user) == 0: return
  312.       def pars(args):
  313.         args=args.lower()
  314.         for name in room.usernames:
  315.           if args in name:return name    
  316.       def roompars(args):
  317.         args = args.lower()
  318.         for name in self.roomnames:
  319.           if args in name:return name
  320.       def roomUsers():
  321.           usrs = []
  322.           gay = []
  323.           prop = 0
  324.           prop = prop + len(room._userlist) - 1
  325.           for i in room._userlist:
  326.             i = str(i)
  327.             usrs.append(i)
  328.           while prop >= 0:
  329.             j = usrs[prop].replace("<User: ", "")
  330.             i = j.replace(">", "")
  331.             gay.append(i)
  332.             prop = prop - 1
  333.           return gay
  334.      
  335.       def getParticipant(arg):
  336.           rname = self.getRoom(arg)
  337.           usrs = []
  338.           gay = []
  339.           finale = []
  340.           prop = 0
  341.           prop = prop + len(rname._userlist) - 1
  342.           for i in rname._userlist:
  343.             i = str(i)
  344.             usrs.append(i)
  345.           while prop >= 0:
  346.             j = usrs[prop].replace("<User: ", "")
  347.             i = j.replace(">", "")
  348.             gay.append(i)
  349.             prop = prop - 1
  350.           for j in gay:
  351.             if j not in finale:
  352.               finale.append(j)
  353.           return finale
  354.  
  355.  ##cmds
  356.       if cmd == "cmds":
  357.         if user.name in owners and not user.name in admin and not user.name in archknight and not user.name in whitelist:
  358.           room.message("<br/>"+user.name+" Rank 4 [Owner] "+"<br/>"+"Perintah nothing :<br/> Isi sendiri sesua perintah lu",True)
  359.         if user.name in admin and not user.name in owners and not user.name in archknight and not user.name in whitelist:
  360.           room.message("<br/>"+user.name+" Rank 3 [Admin] "+"<br/>"+" Perintah nothing :<br/>Isi sendiri sesua perintah lu",True)
  361.         if user.name in archknight and not user.name in owners and not user.name in admin and not user.name in whitelist:
  362.           room.message("<br/>"+user.name+" Rank 2 [Archknight] "+"<br/>"+" Perintah nothing:<br/>Isi sendiri sesua perintah lu",True)
  363.         if user.name in whitelist and not user.name in owners and not user.name in admin and not user.name in archknight:
  364.           room.message("<br/>"+user.name+" Rank 1 [Whitelist] "+"<br/>"+" Perintah nothing :<br/>Isi sendiri sesua perintah lu",True)
  365.  
  366.  
  367.        
  368. ##Setrank
  369.       if cmd == "setrank":
  370.         if self.getAccess(user) < 4:return
  371.         try:
  372.           if len(args) >= 3:
  373.             name = args
  374.             if pars(name) == None:
  375.                 name = name
  376.             elif pars(name) != None:
  377.                 name = pars(name)
  378.             name, rank = args.lower().split(" ", 1)
  379.             if rank == "4":
  380.               owners.append(name)
  381.               f = open("owners.txt", "w")
  382.               f.write("\n".join(owners))
  383.               f.close()
  384.               room.message("Sukses")
  385.               if name in admin:
  386.                 admin.remove(name)
  387.                 f = open("admin.txt", "w")
  388.                 f.write("\n".join(admin))
  389.                 f.close()
  390.               if name in archknight:
  391.                 archknight.remove(name)
  392.                 f = open("archknight.txt", "w")
  393.                 f.write("\n".join(archknight))
  394.                 f.close()
  395.               if name in whitelist:
  396.                 whitelist.remove(name)
  397.                 f = open("whitelist.txt", "w")
  398.                 f.write("\n".join(whitelist))
  399.                 f.close()
  400.             if rank == "3":
  401.               admin.append(name)
  402.               f = open("admin.txt", "w")
  403.               f.write("\n".join(admin))
  404.               f.close()
  405.               room.message("Sukses")
  406.               if name in owners:
  407.                 owners.remove(name)
  408.                 f = open("owners.txt", "w")
  409.                 f.write("\n".join(owners))
  410.                 f.close()
  411.               if name in archknight:
  412.                 archknight.remove(name)
  413.                 f = open("archknight.txt", "w")
  414.                 f.write("\n".join(archknight))
  415.                 f.close()
  416.               if name in whitelist:
  417.                 whitelist.remove(name)
  418.                 f = open("whitelist.txt", "w")
  419.                 f.write("\n".join(whitelist))
  420.                 f.close()
  421.             if rank == "2":
  422.                archknight.append(name)
  423.                f = open("archknight.txt", "w")
  424.                f.write("\n".join(archknight))
  425.                f.close()
  426.                room.message("Sukses")
  427.                if name in owners:
  428.                  owners.remove(name)
  429.                  f = open("owners.txt", "w")
  430.                  f.write("\n".join(owners))
  431.                  f.close()
  432.                if name in admin:
  433.                  admin.remove(name)
  434.                  f = open("admin.txt", "w")
  435.                  f.write("\n".join(admin))
  436.                  f.close()
  437.                if name in whitelist:
  438.                  whitelist.remove(name)
  439.                  f = open("whitelist.txt", "w")
  440.                  f.write("\n".join(whitelist))
  441.                  f.close()
  442.             if rank == "1":
  443.                 whitelist.append(name)
  444.                 f = open("whitelist.txt", "w")
  445.                 f.write("\n".join(whitelist))
  446.                 f.close()
  447.                 room.message("Sukses")
  448.                 if name in owners:
  449.                   owners.remove(name)
  450.                   f = open("owners.txt", "w")
  451.                   f.write("\n".join(owners))
  452.                   f.close()
  453.                 if name in admin:
  454.                   admin.remove(name)
  455.                   f = open("admin.txt", "w")
  456.                   f.write("\n".join(admin))
  457.                   f.close()
  458.                 if name in archknight:
  459.                   archknight.remove(name)
  460.                   f = open("archknight.txt", "w")
  461.                   f.write("\n".join(archknight))
  462.                   f.close()
  463.                  
  464.         except:
  465.               room.message("something wrong")
  466.  
  467.      # clear
  468.       elif cmd == "clear":
  469.           if room.getLevel(self.user) > 0:
  470.             if self.getAccess(user) >= 4 or room.getLevel(user) == 2:
  471.               room.clearall(),
  472.               room.clearUser(ch.User(random.choice(room.usernames))),
  473.               room.clearUser(ch.User(random.choice(room.usernames))),
  474.               room.clearUser(ch.User(random.choice(room.usernames))),
  475.               room.clearUser(ch.User(random.choice(room.usernames))),
  476.               room.clearUser(ch.User(random.choice(room.usernames))),
  477.               room.clearUser(ch.User(random.choice(room.usernames))),
  478.               room.clearUser(ch.User(random.choice(room.usernames))),
  479.               room.clearUser(ch.User(random.choice(room.usernames))),
  480.               room.clearUser(ch.User(random.choice(room.usernames))),
  481.               room.clearUser(ch.User(random.choice(room.usernames))),
  482.               room.clearUser(ch.User(random.choice(room.usernames))),
  483.               room.clearUser(ch.User(random.choice(room.usernames))),
  484.               room.clearUser(ch.User(random.choice(room.usernames))),
  485.               room.clearUser(ch.User(random.choice(room.usernames))),
  486.               room.clearUser(ch.User(random.choice(room.usernames))),
  487.               room.clearUser(ch.User(random.choice(room.usernames))),
  488.               room.clearUser(ch.User(random.choice(room.usernames))),
  489.               room.clearUser(ch.User(random.choice(room.usernames))),
  490.               room.clearUser(ch.User(random.choice(room.usernames))),
  491.               room.clearUser(ch.User(random.choice(room.usernames))),
  492.               room.clearUser(ch.User(random.choice(room.usernames))),
  493.               room.clearUser(ch.User(random.choice(room.usernames))),
  494.               room.clearUser(ch.User(random.choice(room.usernames))),
  495.               room.clearUser(ch.User(random.choice(room.usernames))),
  496.               room.clearUser(ch.User(random.choice(room.usernames))),
  497.               room.clearUser(ch.User(random.choice(room.usernames))),
  498.               room.clearUser(ch.User(random.choice(room.usernames))),
  499.               room.clearUser(ch.User(random.choice(room.usernames))),
  500.               room.clearUser(ch.User(random.choice(room.usernames))),
  501.               room.clearUser(ch.User(random.choice(room.usernames))),
  502.               room.clearUser(ch.User(random.choice(room.usernames))),
  503.               room.clearUser(ch.User(random.choice(room.usernames))),
  504.               room.clearUser(ch.User(random.choice(room.usernames))),
  505.               room.clearUser(ch.User(random.choice(room.usernames))),
  506.               room.clearUser(ch.User(random.choice(room.usernames))),
  507.             else: room.message("Only rank 4+ or the room owner can do this")
  508.           else:
  509.             room.message("aku bukan mods disini :|")
  510.       ##delete chat  
  511.       elif (cmd == "delete" or cmd == "dl" or cmd == "del"):
  512.           if room.getLevel(self.user) > 0:
  513.             if self.getAccess(user) >= 1 or room.getLevel(user) > 0:
  514.               name = args.split()[0].lower()
  515.               room.clearUser(ch.User(name))
  516.             else:room.message("kamu tidak bisa melakukannya!!")
  517.           else:
  518.             room.message("aku bukan mods disini :|")
  519.  
  520.  
  521. ##Eval
  522.       if cmd == "ev" or cmd == "eval" or cmd == "e" and user.name == "rifky102":
  523.         if self.getAccess(user) == 4:
  524.           ret = eval(args)
  525.           if ret == None:
  526.             room.message("Done.")
  527.             return
  528.           room.message(str(ret))
  529.  
  530. ###Youtube
  531.       elif cmd == "youtube" or cmd == "yt":
  532.         if args:
  533.           room.message(tube(args),True)
  534.  
  535.  
  536.  except Exception as e:
  537.       try:
  538.         et, ev, tb = sys.exc_info()
  539.         lineno = tb.tb_lineno
  540.         fn = tb.tb_frame.f_code.co_filename
  541.         room.message("[Expectation Failed] %s Line %i - %s"% (fn, lineno, str(e)))
  542.         return
  543.       except:
  544.         room.message("Undescribeable error detected !!")
  545.         return
  546.  
  547.  ##Other Crap here, Dont worry about it
  548.  
  549.   def onFloodWarning(self, room):
  550.     room.reconnect()
  551.  
  552.   def onJoin(self, room, user):
  553.    print(user.name + " joined the chat!")
  554.  
  555.   def onLeave(self, room, user):
  556.    print(user.name + " left the chat!")
  557.  
  558.   def onUserCountChange(self, room):
  559.     print("users: " + str(room.usercount))
  560.  
  561.  
  562.        
  563.  
  564. if __name__ == "__main__":
  565.   TestBot.easy_start(rooms, botname, password)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement