Added register command to the MCM Discord Bot
Register queries the applications for the user and applies the rank and the nickname if foundreminder
parent
938ec65422
commit
f80de5a85a
35
api/bot.py
35
api/bot.py
|
@ -15,6 +15,7 @@ class Discord(discord.Client):
|
||||||
prefix = getattr(settings, 'DISCORD_BOT_PREFIX', '!')
|
prefix = getattr(settings, 'DISCORD_BOT_PREFIX', '!')
|
||||||
auth_roles = getattr(settings, 'DISCORD_BOT_ROLES', [])
|
auth_roles = getattr(settings, 'DISCORD_BOT_ROLES', [])
|
||||||
error_users = getattr(settings, 'DISCORD_ERROR_USERS', [])
|
error_users = getattr(settings, 'DISCORD_ERROR_USERS', [])
|
||||||
|
member_role = getattr(settings, 'DISCORD_BOT_MEMBER_ROLE', 'Member')
|
||||||
token = None
|
token = None
|
||||||
|
|
||||||
def __init__(self, token, **kwargs):
|
def __init__(self, token, **kwargs):
|
||||||
|
@ -52,13 +53,38 @@ class Discord(discord.Client):
|
||||||
|
|
||||||
member_roles = [role.id for role in message.author.roles]
|
member_roles = [role.id for role in message.author.roles]
|
||||||
|
|
||||||
|
# FIX STALE DB CONNECTIONS
|
||||||
|
close_old_connections()
|
||||||
|
|
||||||
|
# IF NOT A MEMBER YET
|
||||||
|
if len(member_roles) == 1:
|
||||||
|
# REGISTER
|
||||||
|
match = re.match("[{0}]register (\S+)?$".format(self.prefix), message.content)
|
||||||
|
if match:
|
||||||
|
search = match.group(1)
|
||||||
|
count = Application.objects.filter(username__iexact=search, accepted__exact=True).count()
|
||||||
|
|
||||||
|
if count > 0:
|
||||||
|
if count == 1:
|
||||||
|
player = Application.objects.filter(username__iexact=search, accepted__exact=True).all().values()[0]
|
||||||
|
nickname = player["username"]
|
||||||
|
|
||||||
|
role = discord.utils.get(message.server.roles, name=self.member_role)
|
||||||
|
msg = "Successfully added {0} as a {1}.".format(nickname, self.member_role)
|
||||||
|
|
||||||
|
yield from self.change_nickname(message.author, nickname)
|
||||||
|
yield from self.add_roles(message.author, role)
|
||||||
|
yield from self.discord_message(message.channel, msg)
|
||||||
|
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
msg = "An application for {0} could not be found, please apply first.".format(search)
|
||||||
|
yield from self.discord_message(message.channel, msg)
|
||||||
|
|
||||||
# IF MEMBER IS NOT AUTHORIZED, IGNORE
|
# IF MEMBER IS NOT AUTHORIZED, IGNORE
|
||||||
if not any(role in self.auth_roles for role in member_roles):
|
if not any(role in self.auth_roles for role in member_roles):
|
||||||
return
|
return
|
||||||
|
|
||||||
# FIX STALE DB CONNECTIONS
|
|
||||||
close_old_connections()
|
|
||||||
|
|
||||||
# HELP
|
# HELP
|
||||||
match = re.match("[{0}]help$".format(self.prefix), message.content)
|
match = re.match("[{0}]help$".format(self.prefix), message.content)
|
||||||
if match:
|
if match:
|
||||||
|
@ -305,8 +331,5 @@ class OreAlert:
|
||||||
self.playerList.append(p)
|
self.playerList.append(p)
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
api.discord_notification("OreAlert has been stopped manually.")
|
api.discord_notification("OreAlert has been stopped manually.")
|
||||||
except Exception as e:
|
|
||||||
logger.exception("OreAlert has crashed")
|
|
||||||
api.discord_notification("OreAlert has crashed!", ping=True)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue