async def check_registered_users(self): await self.bot.wait_until_ready() guild = self.bot.get_guild(config.base['guild_id']) role = guild.get_role(753640365612990546) members = guild.members for member in guild.members: user = DiscordUser(member) is_registered = user.is_registered() has_role = role in member.roles if is_registered and not has_role: await member.add_roles(role) logger.info('Added @registered to: {}'.format(user.name)) elif not is_registered and has_role: await member.remove_roles(role) logger.info('Removed @registered from: {}'.format(user.name))
async def register_user(self, ctx): """Registers the Discord user and provides a response. If the user is already registered, they will be notified. Otherwise, a confirmation request is created before registering the account. The user will have 15 seconds to respond with a `[Y/N]`. If `[Y]`, the account will attempt to register, the response is then delivered. If `[N]`, the request is cancelled. :param ctx: The invocation context. """ embed = None user = DiscordUser(ctx.author) if user.is_registered(): embed = quickembed.success( desc='Your Discord is already registered', user=user) else: text_question = ( '[Y/N]\nYour Discord is not linked to an existing ' 'Matches account (http://idleuser.com/projects/matches)\n' 'Would you like to register a new account?') embed_question = quickembed.question(user=user, desc=text_question) await ctx.send(embed=embed_question) confirm = await self.bot.wait_for('message', check=checks.confirm(ctx.author), timeout=15.0) confirm.content = confirm.content.upper() if confirm.content == 'Y': response = user.register() if response['success']: user.refresh() embed = quickembed.success(desc=response['message'], user=user) logger.info('`{}` registered'.format(user.username)) else: embed = quickembed.error(desc=response['message'], user=user) logger.warning('`{}` failed to register - {}'.format( user.username, response['message'])) elif confirm.content == 'N': embed = quickembed.error(user=user, desc='Account registration cancelled') if embed: await ctx.send(embed=embed)
async def donate_bucks(self, ctx, amount: int, member: discord.Member): """Sends another user FJBucks from their own wallet. .. Important:: Work in progress. :param ctx: The invocation context. :param amount: The amount of FJBucks to send :param member: The Discord member to send to. """ user = DiscordUser(ctx.author) recipient = DiscordUser(member) if not recipient.is_registered(): embed = quickembed.error(desc='{} is not registered'.format( recipient.name), user=user) else: recipient.fjbucks_transaction(amount, 'owner authorized') embed = quickembed.success( desc='Donated **{} FJBucks** to {}'.format( amount, recipient.name), user=user, ) await ctx.send(embed=embed)