Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from groupy.client import Client
- import time
- class Freshman:
- alive = True
- def __init__(self, name):
- self.name = name
- def status(self):
- if(self.alive):
- return "is alive"
- else:
- return "killed"
- class Upperclassman:
- killCount = 0
- killList = []
- def __init__(self, name):
- self.name = name
- def status(self):
- k = ""
- for s in self.killList:
- k = k + str(s) + " "
- return "Has killed " + str(self.killCount) + " freshmen: " + k
- freshmen = []
- upperclassmen = []
- client = Client.from_token("d879d0209f71013623d54211REDACTED")
- chat = client.groups.get("REDACTED")
- botID = "2087eab1afe1be8e1fREDACTED"
- while(True):
- try:
- time.sleep(0.1)
- message = chat.messages.list()[0]
- messageText = message.text.lower()
- firstChar = messageText[0]
- if(firstChar == '!'):
- command = messageText.split()[0]
- #help lists all commands
- if(command == "!help"):
- client.bots.post(botID,"!help: displays this text\n" +
- "!add (class name): adds a freshman or upperclassman\n" +
- "!remove (class name): removes a freshman or upperclassman\n" +
- "!kill (freshman): kills a freshman\n" +
- "!revive (freshman): revives freshman (if killed by error). note: This will not remove a freshman from an upperclassman's kill list, please use !remkilledby" +
- "!killedBy (freshman, upperclassman): adds kill to upperclassman. Note: this will not kill a freshman, use !kill first\n" +
- "!remKilledBy (freshman, upperclassman): removes kill from upperclassman (if made in error)" +
- "!status (freshman OR upperclassman): returns status of entity")
- #add freshman or upperclassman
- if(command == "!add"):
- if(len(messageText.split()) != 3):
- client.bots.post(botID,"Invalid parameters (class, name)")
- continue
- if(messageText.split()[1] == "freshman"):
- name = messageText.split()[2]
- freshmen.append(Freshman(name))
- client.bots.post(botID,"Added " + name + " to freshmen")
- elif(messageText.split()[1] == "upperclassman"):
- name = messageText.split()[2]
- upperclassmen.append(Upperclassman(name))
- client.bots.post(botID,"Added " + name + " to upperclassmen")
- else:
- client.bots.post(botID,"Invalid parameters (class, name)")
- #remove freshman or upperclassman
- elif(command == "!remove"):
- if(len(messageText.split()) != 3):
- client.bots.post(botID,"Invalid parameters (class, name)")
- continue
- if(messageText.split()[1] == "freshman"):
- name = messageText.split()[2]
- for i in range(len(freshmen)):
- if(freshmen[i].name == name):
- freshmen.pop(i)
- break;
- client.bots.post(botID,"Removed " + name + " from freshmen")
- elif(messageText.split()[1] == "upperclassman"):
- name = messageText.split()[2]
- for i in range(len(upperclassmen)):
- if(upperclassmen[i].name == name):
- upperclassmen.pop(i)
- break;
- client.bots.post(botID,"Removed " + name + " from upperclassmen")
- else:
- client.bots.post(botID,"Invalid parameters (class, name)")
- #kill freshman
- elif(command == "!kill"):
- if(len(messageText.split()) != 2):
- client.bots.post(botID,"Invalid parameters (name)")
- continue
- name = messageText.split()[1]
- for i in range(len(freshmen)):
- if(freshmen[i].name == name):
- freshmen[i].alive = False
- client.bots.post(botID,"killed " + name)
- break
- if(i == len(freshmen) - 1):
- client.bots.post(botID,"Did not recognize freshman named " + name)
- #revive freshman (in case of error)
- elif(command == "!revive"):
- if(len(messageText.split()) != 2):
- client.bots.post(botID,"Invalid parameters (name)")
- continue
- name = messageText.split()[1]
- for i in range(len(freshmen)):
- if(freshmen[i].name == name):
- freshmen[i].alive = True
- client.bots.post(botID,"revive " + name)
- break
- if(i == len(freshmen) - 1):
- client.bots.post(botID,"Did not recognize freshman named " + name)
- #add kill to upperclassman
- elif(command == "!killedby"):
- if(len(messageText.split()) != 3):
- client.bots.post(botID,"Invalid parameters (freshman, upperclassman)")
- continue
- uname = messageText.split()[2]
- fname = messageText.split()[1]
- for i in range(len(upperclassmen)):
- if(upperclassmen[i].name == uname):
- upperclassmen[i].killList.append(fname)
- upperclassmen[i].killCount += 1
- client.bots.post(botID,uname + " killed " + fname)
- break
- if(i == len(upperclassmen) - 1):
- client.bots.post(botID,"Did not recognize upperclassmen named " + name)
- #remove kill from upperclassman
- elif(command == "!remkilledby"):
- if(len(messageText.split()) != 3):
- client.bots.post(botID,"Invalid parameters (freshman, upperclassman)")
- continue
- uname = messageText.split()[2]
- fname = messageText.split()[1]
- for i in range(len(upperclassmen)):
- if(upperclassmen[i].name == uname):
- upperclassmen[i].killList.remove(fname)
- upperclassmen[i].killCount -= 1
- client.bots.post(botID,uname + "did not kill " + fname)
- break
- if(i == len(upperclassmen) - 1):
- client.bots.post(botID,"Did not recognize upperclassmen named " + name)
- #get status
- elif(command == "!status"):
- if(len(messageText.split()) != 2):
- client.bots.post(botID,"Invalid parameters (name)")
- continue
- name = messageText.split()[1]
- found = False
- for i in range(len(freshmen)):
- if(freshmen[i].name == name):
- client.bots.post(botID,freshmen[i].status())
- found = true;
- break
- if(found):
- continue
- for i in range(len(upperclassmen)):
- if(upperclassmen[i].name == name):
- client.bots.post(botID,upperclassmen[i].status())
- break
- if(i == len(freshmen) - 1):
- client.bots.post(botID,"Did not recognize name " + name)
- #unknown command
- else:
- client.bots.post(botID,"unknown command")
- except:
- client.bots.post(botID,"an error has occured. Use !help for help")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement