async def verify(self, context, token=None): """ Member is completing the verification process """ if token is None: await context.send("You must specify a token") return member = context.author user = User.get_or_none(discord_id=member.id, token=token) if user is None: await context.send("That verification token is invalid.") return user.token = None user.save() await context.send("Verification complete")
def update_user_list(users): """Give a list of users in JSON format, create or update user profiles in the database.""" for user_data in users['members']: user = User.get_or_none(slack_id=user_data.get('id')) if user is None: user = User.create( name=user_data.get('name'), display_name=user_data.get('profile').get('display_name'), slack_id=user_data.get('id'), is_bot=user_data.get('is_bot'), is_deleted=user_data.get('deleted')) else: user.name = user_data.get('name') user.display_name = user_data.get('profile').get('display_name') user.is_bot = user_data.get('is_bot') user.is_deleted = user_data.get('deleted') user.save()
async def whitelist(self, context, player = None): """ Add member to clan whitelists """ mentions = context.message.mentions kol = self.bot.kol if len(mentions) > 0: member = mentions[0] user = User.get_or_none(User.discord_id == member.id, User.token.is_null()) if user is None: await context.send("That user has not attached their KoL account.") return player = user.kol_id if player is None: await context.send("Please specify a KoL id, name or a mention a Discord user") return message = await context.send("Adding user to clans") message_stream = DiscordIO(message) result = "Whitelisting complete\n" with tqdm(self.clans, desc="Adding user to clans", file=message_stream, bar_format="{l_bar}`{bar}`|") as p: for clan_name, clan_id, clan_aliases in p: success = await kol.join_clan(id=clan_id) if success is False: result += "* Joining *{}* failed\n".format(clan_name) continue ranks = await kol.clan.get_ranks() rank = next((r for r in ranks if r["name"].lower() == "dungeon runner"), None) if rank is None: result += "* No role matching *Dungeon Runner* found in *{}*\n".format(clan_name) continue success = await kol.clan.add_user_to_whitelist(player, rank=rank["id"], title="Added by ASSistant ({})".format(date.today())) if success is False: result += "* Whitelisting to *{}* failed\n".format(clan_name) message_stream.print(result)
def get_user_profile(user_id): """Given a user id, retrieve the user profile from the database with that id.""" return User.get_or_none(User.slack_id == user_id)