Advertisement
Guest User

Untitled

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