Advertisement
Chrisrweeks

bone bot

Sep 22nd, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 8.13 KB | None | 0 0
  1. from groupy.client import Client
  2. import time
  3.  
  4. class Freshman:
  5.     alive = True
  6.  
  7.     def __init__(self, name):
  8.         self.name = name
  9.  
  10.     def status(self):
  11.         if(self.alive):
  12.             return "is alive"
  13.         else:
  14.             return "killed"
  15.        
  16. class Upperclassman:
  17.     killCount = 0
  18.     killList = []
  19.  
  20.     def __init__(self, name):
  21.         self.name = name
  22.  
  23.     def status(self):
  24.         k = ""
  25.         for s in self.killList:
  26.             k = k + str(s) + " "
  27.         return "Has killed " + str(self.killCount) + " freshmen: " + k
  28.  
  29.  
  30. freshmen = []
  31. upperclassmen = []
  32.                                                    
  33. client = Client.from_token("d879d0209f71013623d54211REDACTED")
  34. chat = client.groups.get("REDACTED")
  35. botID = "2087eab1afe1be8e1fREDACTED"
  36.  
  37. while(True):
  38.     try:
  39.         time.sleep(0.1)
  40.         message = chat.messages.list()[0]
  41.         messageText = message.text.lower()
  42.         firstChar = messageText[0]
  43.         if(firstChar == '!'):
  44.             command = messageText.split()[0]
  45.             #help lists all commands
  46.             if(command == "!help"):
  47.                 client.bots.post(botID,"!help: displays this text\n" +
  48.                                  "!add (class name): adds a freshman or upperclassman\n" +
  49.                                  "!remove (class name): removes a freshman or upperclassman\n" +
  50.                                  "!kill (freshman): kills a freshman\n" +
  51.                                  "!revive (freshman): revives freshman (if killed by error). note: This will not remove a freshman from an upperclassman's kill list, please use !remkilledby" +
  52.                                  "!killedBy (freshman, upperclassman): adds kill to upperclassman. Note: this will not kill a freshman, use !kill first\n" +
  53.                                  "!remKilledBy (freshman, upperclassman): removes kill from upperclassman (if made in error)" +
  54.                                  "!status (freshman OR upperclassman): returns status of entity")
  55.             #add freshman or upperclassman
  56.             if(command == "!add"):
  57.                 if(len(messageText.split()) != 3):
  58.                     client.bots.post(botID,"Invalid parameters (class, name)")
  59.                     continue
  60.                 if(messageText.split()[1] == "freshman"):
  61.                     name = messageText.split()[2]
  62.                     freshmen.append(Freshman(name))
  63.                     client.bots.post(botID,"Added " + name + " to freshmen")
  64.                 elif(messageText.split()[1] == "upperclassman"):
  65.                     name = messageText.split()[2]
  66.                     upperclassmen.append(Upperclassman(name))
  67.                     client.bots.post(botID,"Added " + name + " to upperclassmen")
  68.                 else:
  69.                     client.bots.post(botID,"Invalid parameters (class, name)")
  70.                    
  71.             #remove freshman or upperclassman
  72.             elif(command == "!remove"):
  73.                 if(len(messageText.split()) != 3):
  74.                     client.bots.post(botID,"Invalid parameters (class, name)")
  75.                     continue
  76.                 if(messageText.split()[1] == "freshman"):
  77.                     name = messageText.split()[2]
  78.                     for i in range(len(freshmen)):
  79.                         if(freshmen[i].name == name):
  80.                             freshmen.pop(i)
  81.                             break;
  82.                     client.bots.post(botID,"Removed " + name + " from freshmen")
  83.                 elif(messageText.split()[1] == "upperclassman"):
  84.                     name = messageText.split()[2]
  85.                     for i in range(len(upperclassmen)):
  86.                         if(upperclassmen[i].name == name):
  87.                             upperclassmen.pop(i)
  88.                             break;
  89.                     client.bots.post(botID,"Removed " + name + " from upperclassmen")
  90.                 else:
  91.                     client.bots.post(botID,"Invalid parameters (class, name)")
  92.             #kill freshman
  93.             elif(command == "!kill"):
  94.                 if(len(messageText.split()) != 2):
  95.                     client.bots.post(botID,"Invalid parameters (name)")
  96.                     continue
  97.                 name = messageText.split()[1]
  98.                 for i in range(len(freshmen)):
  99.                     if(freshmen[i].name == name):
  100.                         freshmen[i].alive = False
  101.                         client.bots.post(botID,"killed " + name)
  102.                         break
  103.                     if(i == len(freshmen) - 1):
  104.                         client.bots.post(botID,"Did not recognize freshman named " + name)
  105.             #revive freshman (in case of error)
  106.             elif(command == "!revive"):
  107.                 if(len(messageText.split()) != 2):
  108.                     client.bots.post(botID,"Invalid parameters (name)")
  109.                     continue
  110.                 name = messageText.split()[1]
  111.                 for i in range(len(freshmen)):
  112.                     if(freshmen[i].name == name):
  113.                         freshmen[i].alive = True
  114.                         client.bots.post(botID,"revive " + name)
  115.                         break
  116.                     if(i == len(freshmen) - 1):
  117.                         client.bots.post(botID,"Did not recognize freshman named " + name)
  118.             #add kill to upperclassman
  119.             elif(command == "!killedby"):
  120.                 if(len(messageText.split()) != 3):
  121.                     client.bots.post(botID,"Invalid parameters (freshman, upperclassman)")
  122.                     continue
  123.                 uname = messageText.split()[2]
  124.                 fname = messageText.split()[1]
  125.                 for i in range(len(upperclassmen)):
  126.                     if(upperclassmen[i].name == uname):
  127.                         upperclassmen[i].killList.append(fname)
  128.                         upperclassmen[i].killCount += 1
  129.                         client.bots.post(botID,uname + " killed " + fname)
  130.                         break
  131.                     if(i == len(upperclassmen) - 1):
  132.                         client.bots.post(botID,"Did not recognize upperclassmen named " + name)
  133.                    
  134.             #remove kill from upperclassman
  135.             elif(command == "!remkilledby"):
  136.                 if(len(messageText.split()) != 3):
  137.                     client.bots.post(botID,"Invalid parameters (freshman, upperclassman)")
  138.                     continue
  139.                 uname = messageText.split()[2]
  140.                 fname = messageText.split()[1]
  141.                 for i in range(len(upperclassmen)):
  142.                     if(upperclassmen[i].name == uname):
  143.                         upperclassmen[i].killList.remove(fname)
  144.                         upperclassmen[i].killCount -= 1
  145.                         client.bots.post(botID,uname + "did not kill " + fname)
  146.                         break
  147.                     if(i == len(upperclassmen) - 1):
  148.                         client.bots.post(botID,"Did not recognize upperclassmen named " + name)
  149.             #get status
  150.             elif(command == "!status"):
  151.                 if(len(messageText.split()) != 2):
  152.                     client.bots.post(botID,"Invalid parameters (name)")
  153.                     continue
  154.                 name = messageText.split()[1]
  155.                 found = False
  156.                 for i in range(len(freshmen)):
  157.                     if(freshmen[i].name == name):
  158.                        
  159.                         client.bots.post(botID,freshmen[i].status())
  160.                         found = true;
  161.                         break
  162.                 if(found):
  163.                     continue
  164.                 for i in range(len(upperclassmen)):
  165.                     if(upperclassmen[i].name == name):
  166.                        
  167.                         client.bots.post(botID,upperclassmen[i].status())
  168.                         break
  169.                     if(i == len(freshmen) - 1):
  170.                         client.bots.post(botID,"Did not recognize name " + name)
  171.                
  172.             #unknown command
  173.             else:
  174.                 client.bots.post(botID,"unknown command")
  175.     except:
  176.         client.bots.post(botID,"an error has occured. Use !help for help")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement