Advertisement
0rx

refinedexamplebot

0rx
Jun 6th, 2016
246
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 30.91 KB | None | 0 0
  1. ####################################################################
  2. ####################################################################
  3. ### http://remaire.chatango.com                                  ###
  4. ### http://tango-hyoo.chatango.com                               ###
  5. ### If you would like help setting up your own bot, feel free to ###
  6. ### send me a personal message on chatango.                      ###
  7. ### And if you want to download the complete package of          ###
  8. ### refinedexamplebot.zip, you can go:                           ###
  9. ###                                                              ###
  10. ###  -link : http://c.monosekai.tk/index.php/s/GkMg9lfVpkNH7hF   ###
  11. ###  -password : monosekai.tk                                    ###
  12. ###                                                              ###
  13. ###                                                              ###
  14. ### --Many thanks for TryHardHusky and Poeticartist1--           ###
  15. ####################################################################  
  16.  
  17.  
  18. # YOU WILL NEED THE CH.PY TO RUN THIS BOT!
  19. # YOU CAN GET IT FROM HERE http://pastebin.com/MBwdSZsW
  20. # OR DOWNLOAD THE CH.PY FROM NULLSPEAKER GITHUB HERE
  21. # https://github.com/Nullspeaker/ch.py/archive/master.zip
  22.  
  23. import ch
  24. import random
  25. import sys
  26. import os
  27. import re
  28. import time
  29. import json
  30. import urllib
  31. import traceback
  32. import __future__
  33.  
  34. ################################
  35. lockdown = False
  36. activated = True
  37. ################################
  38.  
  39. ################################
  40. ##File Stuff##
  41.  
  42. blacklist = dict()
  43. try:
  44.   f = open("blacklist.txt", "r")
  45.   blacklist = eval(f.read())
  46.   f.close()
  47. except:pass
  48.  
  49. mod = []
  50. file = open("mod.txt", 'r')
  51. for name in file.readlines():
  52.   if len(name.strip()) > 0 :
  53.     mod.append(name.strip())
  54. print("NOTICE: Mod list loaded.")
  55. file.close()
  56.  
  57. registered = []
  58. file = open("registered.txt", 'r')
  59. for name in file.readlines():
  60.   if len(name.strip()) > 0 :
  61.     registered.append(name.strip())
  62. print("NOTICE: Registered Users loaded.")
  63. file.close()
  64.  
  65. owner = []
  66. file = open("owner.txt", 'r')
  67. for name in file.readlines():
  68.   if len(name.strip()) > 0 :
  69.     owner.append(name.strip())
  70. print("NOTICE: Your Ownership loaded.")
  71. file.close()
  72.  
  73. rooms = []
  74. file = open("rooms.txt", 'r')
  75. for name in file.readlines():
  76.   if len(name.strip()) > 0 :
  77.     rooms.append(name.strip())
  78. print("NOTICE: Room list loaded.")
  79. file.close()
  80.  
  81. locks = []
  82. file = open("locks.txt", 'r')
  83. for name in file.readlines():
  84.   if len(name.strip()) > 0 :
  85.     locks.append(name.strip())
  86. print("NOTICE: Locked Rooms loaded.")
  87. file.close()
  88.  
  89. ##End##
  90. ################################
  91.  
  92. #############################################################
  93. ##========================Variables========================##
  94.  
  95. botname = "" #Put your bot name here
  96.  
  97. botpassword = "" #Put your bot password here
  98.  
  99. cek_mods = dict() #Don't mess with this variable. This one is related with *mods command.
  100.  
  101. error = ("Expectation failed.")    #Error message
  102.  
  103. command_list = ['help','wl/register','uwl/unregister','bl/blacklist','chain','ubl/unblacklist','unchain','rank','setrank','pm','broadcast','say','reverse/rsay','find','multichat','ban','unban','join','leave','lock','unlock','rooms','save','mods','activate','restrict','lockdown','wake']
  104.  
  105. prefix = "~" ##You set the prefix here
  106.  
  107. ##===========================End===========================##
  108. #############################################################
  109.  
  110. #setting colors
  111.  
  112. class TestBot(ch.RoomManager):
  113.   def onInit(self):
  114.     self.setNameColor("FF9966")
  115.     self.setFontColor("33CCFF")
  116.     self.setFontFace("1")
  117.     self.setFontSize(12)
  118.     self.enableBg()  
  119.     self.enableRecording()
  120.    
  121.   def saveAll(self):
  122.     room = self._Room
  123.     f = open("owner.txt", "w")
  124.     f.write("\n".join(owner))
  125.     f.close()
  126.     f = open("mod.txt", "w")
  127.     f.write("\n".join(mod))
  128.     f.close()
  129.     f = open("registered.txt", "w")
  130.     f.write("\n".join(registered))
  131.     f.close()
  132.     f = open("blacklist.txt", "w")
  133.     f.write("\n".join(blacklist))
  134.     f.close()
  135.     f = open("locks.txt", "w")
  136.     f.write("\n".join(locks))
  137.     f.close()
  138.     f = open("rooms.txt", "w")
  139.     f.write("\n".join(self.roomnames))
  140.     f.close()
  141.  
  142.  
  143.  
  144.   def getAccess(self, room, user):
  145.     vroom = room
  146.     if user.name in owner and not user.name in blacklist: return 5
  147.     elif user.name in mod and not user.name in blacklist: return 4
  148.     elif user.name in registered and user.name in vroom.ownername and not user.name in blacklist: return 3
  149.     elif user.name in registered and user.name in vroom.modnames and not user.name in blacklist: return 2
  150.     elif user.name in registered and not user.name in vroom.ownername and not user.name in room.modnames and not user.name in blacklist: return 1
  151.     elif user.name in blacklist: return -1
  152.     else: return 0
  153.  
  154. #############################################  
  155. ##connecting and disconnecting crap##
  156.  
  157.   def onConnect(self, room):
  158.     print("[+] Mad Hatter Connected to "+room.name)
  159.     for i in cek_mods: #Di onJoin
  160.       if len(cek_mods[i]) > 1:
  161.         rmm, rmd = json.loads(cek_mods[i])
  162.         self.getRoom(rmm).message("<br/>||<font color='#87ceeb'><b>OWNER</b></font>: <b>"+ (self.getRoom(rmd).ownername) +"</b> <br/>||<b>Mods</b>: "+", ".join(self.getRoom(rmd).modnames), True)
  163.         self.leaveRoom(rmd)
  164.         cek_mods.pop(i)
  165.       return
  166.    
  167.   def onReconnect(self, room):
  168.     print("[+] Mad Hatter Reconnected to "+room.name)
  169.    
  170.   def onDisconnect(self, room):
  171.     print("[+] Mad Hatter Disconnected from "+room.name)
  172.    
  173.   def onBan(self, room, user, target):
  174.     print(user.name+" got banned in "+room.name)
  175.    
  176. #  def onJoin(self, room, user):
  177. #    print("[+] "+user.name+" joined "+room.name)
  178. #    if not activated: return
  179. #    if user.name in owner:
  180. #      room.message("*Bows down to "+ user.name.title() +"*")
  181. #      return
  182. #    if self.getAccess(room, user) > 1 and not user.name in owner:
  183. #      room.message("Good Day "+user.name+".")
  184. #      return
  185. #    if int(room.usercount) > 20:
  186. #      return
  187. #    if self.getAccess(room, user) == 1 or self.getAccess(room, user) == 0:
  188. #      room.message(user.name+" has joined the room.")
  189. #      return
  190.  
  191.   def onConnectFail(self, room):
  192.     print("[ERR] Room Not Found")
  193.     for i in cek_mods: #Di onJoin
  194.       if len(cek_mods[i]) > 1:
  195.         rmm, rmd = json.loads(cek_mods[i])
  196.         self.getRoom(rmm).message("Such room doesn't exist")
  197.         cek_mods.pop(i)
  198.       return
  199.  
  200.  
  201.  
  202. ##End##
  203. #############################################
  204.  
  205. #############################################
  206. ##setting up commands##
  207.  
  208.   def onMessage(self, room, user, message):
  209.    try:
  210.     if user == self.user:
  211.         return
  212.     global activated
  213.     global lockdown
  214.     global prefix
  215.     global owner
  216.     global mod
  217.     global registered
  218.     try:
  219.       if room.getLevel(self.user) > 0:
  220.         print("[%s]\033[94m[MSG]\033[0m\033[31m[Rank %s]\033[0m\033[41m[%s][%s] %s: %s" % (time.strftime("%d/%m/%y- %H:%M:%S", time.localtime(time.time())), self.getAccess(room, user), room.name, message.ip, user.name.title(), message.body))
  221.       else:
  222.         print("[%s]\033[94m[MSG]\033[0m\033[31m[Rank %s]\033[0m\033[41m[%s][User_IP: Null] %s: %s" % (time.strftime("%d/%m/%y- %H:%M:%S", time.localtime(time.time())), self.getAccess(room, user), room.name, user.name.title(), message.body))
  223.     except:
  224.       pass
  225.     if user.name.startswith("#") or user.name.startswith("!"):return
  226.     if self.user == user: return
  227.     if user.name in blacklist: return
  228.     if self.getAccess(room, user) > 0:
  229.       if not activated and self.getAccess(room, user) < 4: return #return, if not activated and user rank is less than 4.
  230.       ##Persona | You design a good personality for your bot in this part
  231.       if "hey" in message.body:
  232.           room.message("Yesh, " +message.body)
  233.       if "hello" == message.body.lower(): #for example if someone said "hello" in the chatroom
  234.           room.message("Hello "+user.name.title()) #the bot will answer with "Hello User1Name"
  235.       if "hi" == message.body.lower():
  236.           room.message("Hi "+user.name.title())
  237.       if "please kill it" == message.body:
  238.         self.stop()
  239.        
  240.     ##Commands | You design great commands for your bot in this part
  241.     if message.body[0] == prefix: #prefix usage in this line (for this case I use "~" as prefix)
  242.         data = message.body[1:].split(" ", 1) #This part splits message body into [0]prefix and [1:]data ([1:] <- this means the message body's second character and after) and data will be split into 2 (cmd(data[0]), args(data[1])) which is very usefull. (Many thanks to TryHardHusky)
  243.         if len(data) == 2: #If there are more than 1 data (This is where we will get args)
  244.           cmd, args = data[0], data[1] #the first data (data[0]) will be the cmd (specified command) and the next data will be args (it doesn't matter how many word next to the cmd, It'd eventually be args)
  245.         else: #If there is only 1 data (No args)
  246.           cmd, args = data[0], "" #the arg will simply be "" (Empty)
  247.         cmd == cmd.lower()
  248.  
  249.         ##Activating and Inactivating Bot
  250.         if cmd == "shutdown":
  251.           if self.getAccess(room, user) == 5:
  252.             self.saveAll()
  253.             room.message("Bye *waves*")
  254.             self.setTimeout(3, self.stop, )
  255.         if cmd == "activate":
  256.           if self.getAccess(room, user) < 4: return
  257.           activated = True
  258.           room.message("[Activated]")
  259.  
  260.         if cmd == "restrict":
  261.           if self.getAccess(room, user) < 4: return
  262.           activated = False
  263.           room.message("[Restricted]")
  264.  
  265.         if not activated and self.getAccess(room, user) < 5: return #Ignore user with rank lower than 5 when not activated
  266.         if lockdown and self.getAccess(room, user) < 4: return #Ignore user with rank lower than 4 when in lockdown
  267.        
  268.         if cmd == "help": #Help command (It will show the bot's version, user's rank status, user's room level, and Available commands)
  269.           version = "Example Version" #You set the bot's version manually in this line
  270.           rank = 0
  271.           moded = "no"
  272.           rank = self.getAccess(room, user)
  273.           if room.getLevel(user) > 0:
  274.             moded = "yes"
  275.           if rank > 1:
  276.             room.message("<font color='#FF8C00'><b>"+self.user.name+"</b></font>(<font color='#B8860B'><b>"+version+"</b></font>)<br/>"+user.name.title()+" - [<font color='#FF0000'><b>Rank "+str(rank)+"</b></font>] - Moded [<b>"+moded+"</b>]<br/>cmds: use [%s] as prefix [%s]"% (prefix, ", ".join(command_list)), True)
  277.           if rank == 0:
  278.             moded = "Null"
  279.             if room.getLevel(user) > 0:
  280.               moded = "Moded"
  281.             room.message("<font color='#FF8C00'><b>"+self.user.name+"</b></font>(<font color='#B8860B'><b>"+version+"</b></font>)<br/>"+user.name.title()+" - [<font color='#FF0000'><b>Unregistered</b></font>] - [<b>"+moded+"</b>]<br/>cmds: use [%s] as prefix [%s]"% (prefix, ", ".join(['help','wl','uwl'])), True)
  282.          
  283.         if self.getAccess(room, user) == 0 and cmd == "wl" or cmd == "register" or cmd == "reg": #First cmd for unwhitelisted user.
  284.           if args == "":
  285.             registered.append(user.name) #To put user.name in whitelist
  286.             room.message("Done, You're now a Registered as player.")
  287.           else:
  288.             if args in registered:
  289.               room.message(args.title()+" is already registered.")
  290.               return
  291.             if args in room.usernames:
  292.               registered.append(args)
  293.               room.message("Done, "+args.title()+" is now Registered.")
  294.             else:
  295.               room.message("I don't see "+args.title()+" here.")
  296.          
  297.         if self.getAccess(room, user) > 0 and cmd == "uwl" or cmd == "unregister" or cmd == "unreg":
  298.           if user.name in registered:
  299.             registered.remove(user.name)
  300.           if user.name in mod:
  301.             mod.remove(user.name)
  302.           room.message("Success, You unregistered yourself.")
  303.        
  304.         if self.getAccess(room, user) < 1: return # This is to filter the command section | return, If user is not whitelisted.
  305.        
  306. ##################################################################################################################
  307. ##=======================================  Commands for rank 2+  ===============================================##
  308.        
  309.         if cmd == "setrank" and self.getAccess(room, user) == 5:
  310.           help_output = "Usage : ~setrank [usertarget] [number]<br/>Example : ~setrank gayman 1]"
  311.           if args == "":
  312.             room.message(help_output, True)
  313.           if args != "":
  314. #           try:
  315.             args = args.lower()
  316.             target, rank = args.split(" ", 1)
  317.             target = str(target)
  318.             rank = int(rank)
  319.             available_rank = [-1,0,1,4,5]
  320.             if not rank in available_rank:
  321.               room.message("Type a propper rank number.")
  322.               return
  323.             if rank == 1:
  324.               if target in registered:
  325.                 room.message(target.title()+" is already a Player.")
  326.                 return
  327.               if target in blacklist:
  328.                 blacklist.pop(target)
  329.               if target in owner:
  330.                 owner.remove(target)
  331.               if target in mod:
  332.                 mod.remove(target)
  333.               registered.append(target)
  334.               room.message(target.title()+"'s rank is set to: "+str(rank)+" [Player]")
  335.             if rank == 4:
  336.               if target in mod:
  337.                 room.message(target.title()+" is already a Moderator.")
  338.                 return
  339.               if target in blacklist:
  340.                 blacklist.pop(target)
  341.               if target in owner:
  342.                 owner.remove(target)
  343.               if target in registered:
  344.                 registered.remove(target)
  345.               mod.append(target)
  346.               room.message(target.title()+"'s rank is set to: "+str(rank)+" [Moderator]")
  347.             if rank == 5:
  348.               if not user.name == "tsuid": return #put your name there (if user.name == "yourname" and user.name == "anothername":) To prevent other Owners(in this case is Co-Owners) to set user's rank to Co-Owner.
  349.               if target in owner:
  350.                 room.message(target.title()+" is already a Co-Owner.")
  351.                 return
  352.               if target in blacklist:
  353.                 blacklist.pop(target)
  354.               if target in registered:
  355.                 registered.remove(target)
  356.               if target in mod:
  357.                 mod.remove(target)
  358.               owner.append(target)
  359.               room.message(target.title()+"'s rank is set to: "+str(rank)+" [Owner]")
  360.             if rank == 0:
  361.               if not user.name == "tsuid": return #put your name there (if user.name == "yourname" and user.name == "anothername":) To prevent your account(s) from being unwhitelisted by your Co-Owner.
  362.               if target in owner:
  363.                 owner.remove(target)
  364.               if target in blacklist:
  365.                 blacklist.pop(target)
  366.               if target in registered:
  367.                 registered.remove(target)
  368.               if target in mod:
  369.                 mod.remove(target)
  370.               room.message(target.title()+"'s rank is set to: "+str(rank))
  371.             if rank == -1:
  372.               if target == "tsuid": return #put your name there (if target == "yourname" and target == "anothername":) To prevent your account(s) from being blacklisted.
  373.               if target in blacklist:
  374.                 room.message(target.title()+" is already blacklisted.<br/>Reason: %s"% blacklist[target])
  375.                 return
  376.               blacklist.update({target:"Annoying reason."})
  377.               room.message(target.title()+"'s rank is set to: "+str(rank)+" [Fugitive]")
  378. #           except:
  379. #             room.message(help_output, True)
  380.  
  381.         if cmd == "lockdown": #This is to lock commands for user with rank lower than 4
  382.           if self.getAccess(room, user) < 4: return
  383.           if lockdown: return
  384.           room.message("Command is Locked.")
  385.           lockdown = True
  386.  
  387.         if cmd == "wake": #This is to unlock the command lockdown
  388.           if self.getAccess(room, user) < 4: return
  389.           if not lockdown: return
  390.           room.message("Command is unlocked.")
  391.           lockdown = False
  392.          
  393.         if cmd == "bl" or cmd == "blacklist":
  394.           if args == "":
  395.             if len(blacklist) < 0:
  396.               room.message("Blacklist: None")
  397.               return
  398.             black_users = ["#redperson"]
  399.             for i in blacklist:
  400.               black_users.append(i)
  401.             room.message("Blacklist: %s."% (", ".join(black_users)))
  402.           if len(args.split(" ")) > 0:
  403.             if len(args.split(" ", 1)) == 2:
  404.               target, reason = args.split(" ", 1)
  405.               target = target.lower()
  406.             if len(args.split(" ", 1)) == 1:
  407.               target = args.lower()
  408.           if self.getAccess(room, ch.User(target)) == 5: return #to prevent owner and co-owners from blacklisted
  409.           if self.getAccess(room, ch.User(target)) >=4 and self.getAccess(room, user) == 4: #To prevent bot moderators from banning another moderator or even owners
  410.             room.message("You don't have the permission to do that")
  411.             return
  412.           if target in blacklist:
  413.             room.message(target.title()+"'s status: Blacklisted<br/>Reason: <i>%s</i>"% (blacklist[args]), True)
  414.           if target not in blacklist and len(args) > 1:
  415.             if self.getAccess(room, user) < 4: return
  416.             if len(reason) < 10:
  417.               room.message("Reason is too short. put minimal 10 characters.")
  418.               return
  419.             blacklist.update({str(target):str(reason)})
  420.             room.message(target.title()+" is blacklisted.<br/>"+user.name.title()+"'s Reason: "+reason, True)
  421.            
  422.         if cmd == "unblacklist" or cmd == "ubl":
  423.           if self.getAccess(room, user) < 4: return
  424.           if args == "": return
  425.           args = args.lower()
  426.           if args not in blacklist:
  427.             room.message(args.title()+" is not blacklisted.")
  428.             return
  429.           if args in mod and self.getAccess(room, user) < 5:
  430.             room.message("You don't have permission to unblacklist that user.")
  431.             return
  432.           blacklist.pop(args)
  433.           room.message(args.title()+" is unblacklisted.")
  434.            
  435.         if cmd == "unchain":
  436.           if self.getAccess(room, user) < 4: return
  437.           if args == "": return
  438.           args = args.lower()
  439.           if args not in blacklist:
  440.             room.message(args.title()+" is not chained.")
  441.             return
  442.           if args in mod and self.getAccess(room, user) < 5:
  443.             room.message("You don't have permission to unchain that user.")
  444.             return
  445.           blacklist.pop(args)
  446.           room.message(args.title()+" is unchained.")
  447.            
  448.         if cmd == "chain":
  449.           if args == "":
  450.             if len(blacklist) < 0:
  451.               room.message("Chained: None")
  452.               return
  453.             black_users = ["#esperguy"]
  454.             for i in blacklist:
  455.               black_users.append(i)
  456.             room.message("Chained: %s."% (", ".join(black_users)))
  457.           if len(args.split(" ")) > 0:
  458.             if len(args.split(" ", 1)) == 2:
  459.               target, reason = args.split(" ", 1)
  460.               target = target.lower()
  461.             if len(args.split(" ", 1)) == 1:
  462.               target = args.lower()
  463.           if target in blacklist and len(args) == 1:
  464.             room.message(target.title()+"'s status: Chained<br/>Reason: <i>%s</i>"% (blacklist[args]), True)
  465.           if target not in blacklist and len(args) > 1:
  466.             if self.getAccess(room, user) < 4: return
  467.             if len(reason) < 10:
  468.               room.message("Reason is too short. put minimal 10 characters.")
  469.               return
  470.             blacklist.update({target:reason})
  471.             room.message(target.title()+" is Chained.<br/>"+user.name.title()+"'s Reason: <i>%s</i>"% (reason), True)
  472.  
  473.  
  474.         if cmd == "lock":
  475.           if self.getAccess(room, user) < 2:
  476.             room.message("No.")
  477.             return
  478.           if args in locks:
  479.             room.message("It's locked already.")
  480.             return
  481.           if args in self.roomnames:
  482.             if self.getAccess(room, user) > 3:
  483.               locks.append(args)
  484.               room.message("locked <b>%s</b>" % args, True)
  485.             else: room.message("You don't have permission to do that.")
  486.           if args == "":
  487.             if room.name in locks:
  488.               room.message("It's locked already.")
  489.               return
  490.             locks.append(room.name)
  491.             room.message("locked <b>%s</b>" % room.name, True)
  492.           if args not in self.roomnames:
  493.             if args == "": return
  494.             room.message("I haven't joined %s."% args)
  495.             return
  496.  
  497.         if cmd == "unlock":
  498.           if self.getAccess(room, user) < 2: return
  499.           if args in self.roomnames:
  500.             if args in locks:
  501.               if self.getAccess(room, user) > 3:
  502.                 locks.remove(args)
  503.                 room.message("unlocked <b>%s</b>" % args, True)
  504.               else: room.message("You don't have permission to do that.")
  505.             else:
  506.               room.message("It's not even locked.")
  507.               return
  508.           if args == "":
  509.             if room.name in locks:
  510.               locks.remove(room.name)
  511.               room.message("unlocked <b>%s</b>" % room.name, True)
  512.             else:
  513.               room.message("It's not even locked.")
  514.               return
  515.           if args not in self.roomnames:
  516.             if args == "": return
  517.             room.message("I haven't joined %s"% args)
  518.             return
  519.  
  520.         if cmd == "ban":
  521.           if room.getLevel(user) > 0:
  522.             if room.getLevel(self.user) > 0:
  523.               room.banUser(ch.User(args))
  524.               room.message(args.title()+" is banned")
  525.             else:
  526.               room.message("I'm not even a mod here")
  527.           else:
  528.             room.message("You don't have permission")
  529.            
  530.         if cmd == "unban":
  531.           if args == "": return
  532.           args = args.lower()
  533.           if room.getLevel(user) > 0:
  534.             if room.getLevel(self.user) > 0:
  535.               if ch.User(args) not in room.getBanlist():
  536.                 room.message(args.title()+" is not even banned.")
  537.                 return
  538.               room.unban(ch.User(args))
  539.               room.message(args.title()+" is unbanned")
  540.             else:
  541.               room.message("I'm not even a mod here")
  542.           else:
  543.             room.message("You don't have permission")
  544.  
  545.         if cmd == "broadcast":
  546.             if self.getAccess(room, user) > 3:
  547.                 for room in self.rooms:
  548.                     room.message("Broadcast from - <b>"+user.name + "</b>: "+args, True)
  549.             else:
  550.                 room.message("You don't have permission.")
  551.        
  552.  
  553.         if cmd == "join": #This command is free for all registered user (rank 1+) to use
  554.           if args == "": return
  555.           if args in self.roomnames:
  556.             room.message("I'm there already.")
  557.           else:
  558.             self.joinRoom(args)
  559.             room.message("*Joins "+args.title()+"*")
  560.        
  561.         if cmd == "leave":
  562.           if self.getAccess(room, user) > 1:
  563.             if args == "":
  564.               room.message("Okay, I'm leaving this room.")
  565.               self.setTimeout(2, self.leaveRoom, room.name)
  566.             else:
  567.               if self.getAccess(room, user) < 4: return
  568.               self.leaveRoom(args)
  569.               room.message("I'm leaving "+args.title())
  570.           else:
  571.             room.message("You don't have permission.")
  572.            
  573.         if cmd == "save" and self.getAccess(room, user) >= 4:
  574.           self.saveAll()
  575.           room.message("Database has been saved.")
  576.          
  577.         if (cmd == "eval") and self.getAccess(room, user) == 5: #DO NOT MESS WITH THIS COMMAND IF YOU DON'T KNOW WHAT YOU'RE DOING (This is a vital command)
  578.           ret = eval(args)
  579.           if ret == None:
  580.             room.message("Done.")
  581.             return
  582.           room.message(str(ret))
  583.  
  584.  
  585. ##=======================================  Commands for rank 2+  ===============================================##
  586. ##=============================================== End ==========================================================##
  587. ##################################################################################################################
  588.  
  589.  
  590.         if cmd == ("say"):
  591.             if args:
  592.               room.message(args)
  593.             else:
  594.               room.message("What to say ?")
  595.              
  596.         if cmd == "reverse" or cmd == "rsay": #Reversed arguments
  597.           if args:
  598.             room.message(args[::-1])
  599.           else:
  600.             room.message("Fook off"[::-1])
  601.  
  602.  
  603.         elif cmd == "cmds":
  604.           if self.getAccess(room, user) < 1: return
  605.           room.message("some commands you can use, with [%s] as prefix [%s]"% (prefix, ", ".join(command_list)))
  606.  
  607.  
  608.         if cmd == "pm" and len(args) > 1:
  609.             name, msg = args.split(" ", 1)
  610.             self.pm.message(ch.User(name.lower()), msg+" - from "+user.name)
  611.             room.message('Sent to <font size="15"><font color="#FF9966"><b>%s</b></font></font>' % name, True)
  612.  
  613.        ##Checking levels and ranks stuff  
  614.         elif cmd == "level":
  615.           if args == "":
  616.             level = room.getLevel(user)
  617.             if level == 1:
  618.               title = "Moderator"
  619.             if level == 2:
  620.               title = "OWNER"
  621.             if level == 0:
  622.               title = "Slave"
  623.             room.message("Your room level is: %s [%s]" %(level,title))
  624.           else:
  625.             level = room.getLevel(ch.User(args))
  626.             if level == 1:
  627.               title = "Moderator"
  628.             if level == 2:
  629.               title = "OWNER"
  630.             if level == 0:
  631.               title = "Slave"
  632.             room.message("%s's room level is: %s [%s]" %(args.title(), level, title))
  633.  
  634.  
  635.         elif cmd == "rank":
  636.           if args == "":
  637.             rank = self.getAccess(room, user)
  638.             if rank == 1:
  639.               title = "Player"
  640.               room.message("Your rank is: <font color='#7cfc00'><b>%s</b></font> [<font color='#7cfc00'>%s</font>]" % (rank, title), True)
  641.             if rank == 2:
  642.               title = "Room Mod"
  643.               room.message("Your rank is: <font color='#7cfc00'><b>%s</b></font> [<font color='#7cfc00'>%s</font>]" % (rank, title), True)
  644.             if rank == 3:
  645.               title = "Room Admin"
  646.               room.message("Your rank is: <font color='#7cfc00'><b>%s</b></font> [<font color='#7cfc00'>%s</font>]" % (rank, title), True)
  647.             if rank == 4:
  648.               title = "Moderator"
  649.               room.message("Your rank is: <font color='#0000ff'><b>%s</b></font> [<font color='#fffaf0'><b>%s</b></font>]" % (rank, title), True)
  650.             if rank == 5:
  651.               title = "Owner"
  652.               room.message("Your rank is: <font color='#c0c0c0'><b>%s</b></font> [<font color='#87ceeb'><b>%s</b></font>]" % (rank, title), True)
  653.           else:
  654.               rank = self.getAccess(room, ch.User(args))
  655.               if rank == 0:
  656.                 room.message(args+" is unregistered.")
  657.               if rank == 1:
  658.                 title = "Player"
  659.                 room.message(args+"'s rank is: <font color='#7cfc00'><b>%s</b></font> [<font color='#7cfc00'>%s</font>]" % (rank, title), True)
  660.               if rank == 2:
  661.                 title = "Room Mod"
  662.                 room.message(args+"'s rank is: <font color='#7cfc00'><b>%s</b></font> [<font color='#7cfc00'>%s</font>]" % (rank, title), True)
  663.               if rank == 3:
  664.                 title = "Room Admin"
  665.                 room.message(args+"'s rank is: <font color='#7cfc00'><b>%s</b></font> [<font color='#7cfc00'>%s</font>]" % (rank, title), True)
  666.               if rank == 4:
  667.                 title = "Moderator"
  668.                 room.message(args+"'s rank is: <font color='#0000ff'><b>%s</b></font> [<font color='#fffaf0'><b>%s</b></font>]" % (rank, title), True)
  669.               if rank == 5:
  670.                 title = "Owner"
  671.                 room.message(args + "'s rank is: <font color='#c0c0c0'><b>%s</b></font> [<font color='#87ceeb'><b>%s</b></font>]" % (rank, title), True)
  672.                
  673.        
  674.         elif cmd == "mods":
  675.           args = args.lower()
  676.           if args == "":
  677.             room.message("<br/>||<font color='#87ceeb'><b>OWNER</b></font>: <u>"+ (room.ownername) +"</u> <br/>||<b>Mods</b>: "+", ".join(room.modnames), True)
  678.             return
  679.           if args in self.roomnames:
  680.               modask = self.getRoom(args).modnames
  681.               owner = self.getRoom(args).ownername
  682.               room.message("<br/>||<font color='#87ceeb'><b>OWNER</b></font>: <u>"+ (owner) +"</u> <br/>||<b>Mods</b>: "+", ".join(modask), True)
  683.           else:
  684.              self.joinRoom(args)
  685.              cek_mods[user.name] = json.dumps([room.name,args])
  686.  
  687.  
  688.         ##Some certain commands for rank 1+
  689.  
  690.        
  691.         if cmd == ("find") and len(args) > 0:
  692.           name = args.split()[0].lower()
  693.           if not ch.User(name).roomnames:
  694.             room.message("dont see them. ^^")
  695.           else:
  696.             room.message("%s is curently in <b>%s</b> >_>" % (args, ", ".join(ch.User(name).roomnames)), True)
  697.         if cmd == "multichat":
  698.           room.message("http://ch.pew.im/chat/?"+args)
  699.         if cmd == "rooms":
  700.           room.message("||i'm in : <b>%s</b> ||" % (", ".join(self.roomnames)), True)
  701.  
  702.  
  703.  
  704.    except Exception as e:
  705.          try:
  706.           et, ev, tb = sys.exc_info()
  707.           lineno = tb.tb_lineno
  708.           fn = tb.tb_frame.f_code.co_filename
  709.           room.message("[Error] %s Line %i - %s"% (fn, lineno, str(e)))
  710.           return
  711.          except:
  712.           room.message("Undescribeable error detected !!")
  713.           return
  714.  
  715.  
  716.   def onUserCountChange(self, room):
  717.     print(room.name+" - Current Users: " + str(room.usercount))
  718.  
  719. #  def onLeave(self, room, user):
  720. #    print("[+] "+user.name+" left "+room.name)
  721. #    if room.usercount >= 20:
  722. #      return
  723. #    room.message(user.name+" has left the room.")
  724.  
  725.   def onFloodWarning(self, room):
  726.     room.reconnect()
  727.     room.setSilent(True)
  728.     self.setTimeout(15, room.setSilent, False)
  729.     self.setTimeout(16, room.message, "I'm back.")
  730.     print("[+] Reconnecting...")
  731.  
  732.   def onMessageDelete(self, room, user, msg):
  733.     print("MESSAGE DELETED: " + user.name + ": " + msg.body)
  734.  
  735.   def onPMMessage(self, pm, user, body):
  736.     print("PM - "+user.name+": "+body)
  737.     pm.message(user, "I'm a Bot Created by 0rx. Please PM my owner instead!")
  738.  
  739. def hexc(e):
  740.   et, ev, tb = sys.exc_info()
  741.   if not tb: print(str(e))
  742.   while tb:
  743.     lineno = tb.tb_lineno
  744.     fn = tb.tb_frame.f_code.co_filename
  745.     tb = tb.tb_next
  746.   print("(%s:%i) %s" % (fn, lineno, str(e)))
  747.  
  748. if __name__ == "__main__":
  749.    try:
  750.      os.system("clear")
  751.      TestBot.easy_start(rooms, botname, botpassword)
  752.    except KeyboardInterrupt:
  753.      print("Console initiated a kill.")
  754.    except Exception as e:
  755.      hexc(e)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement