Created
March 22, 2017 13:19
-
-
Save stuxcrystal/27514cb931c2532bfc02ad1d7c959573 to your computer and use it in GitHub Desktop.
Refactored Bot Code
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Member(dict): | |
def __init__(self, name, *args, **kwargs): | |
super(Member, self).__init__(**kwargs) | |
self.name = name | |
class MemberStore(object): | |
def __init__(self): | |
self.members = {} | |
self.aliases = {} | |
def register_alias(self, user, alias): | |
self.aliases[alias] = user | |
def get_user(self, name): | |
if name in self.members: | |
return self.members[name] | |
if name in self.aliases: | |
return self.get_user(self.aliases[name]) | |
self.members[name] = Member(name) | |
return self.members[name] | |
_members = MemberStore() | |
_commands = {} | |
def _command(name): | |
def _decorator(func): | |
_commands[name] = func | |
return func | |
return _decorator | |
@_command("faggot") | |
def faggot(user): | |
global _members | |
user = _members.get_user(user) | |
counter = user.get('faggot', 0) + 1 | |
user['faggot'] = counter | |
return f"Der Benutzer {user} hat nun {counter} fgts." | |
@_command("faggot") | |
def alias(line): | |
global _members | |
user, alias = line.split(" ") | |
_members.register_alias(user, alias) | |
return f"Der Benutzer {user} hat nun den Alias {alias}" | |
def parse_command(line): | |
cmd, *data = line.split(" ", 1) | |
if len(data): | |
data = data[0] | |
else: | |
data = "" | |
return cmd, data | |
async def execute_command(client, message, str): | |
cmd, data = parse_command(str) | |
result = _commands[cmd](data) | |
return await client.send_message(message.channel, result) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment