コード例 #1
0
 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))
コード例 #2
0
    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)
コード例 #3
0
ファイル: fjbucks.py プロジェクト: idle-user/fjbot-discordbot
    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)