Exemple #1
0
    async def on_member_update(self, before: discord.Member,
                               after: discord.Member):
        if before.bot:
            return

        channel = await self.check_log_channel(before.guild)
        if not channel:
            return

        if before.display_name != after.display_name:
            embed = Embed(
                author = after,
                colour = discord.Colour.blue(),
                footer = 'Modified At',
                title = 'Nickname Updated',
                description = (
                    f'**Before:** {before.display_name}\n'\
                    f'**After:** {after.display_name}'
                )
            )

            await embed.send(channel)

        if before.roles != after.roles:
            embed = Embed(title='Roles Updated',
                          colour=discord.Colour.blue(),
                          author=after,
                          footer='Modified At')

            temp: list[discord.Role] = list(set(before.roles + after.roles))
            added = []
            removed = []

            for role in temp:
                if role in before.roles and role not in after.roles:
                    removed.append(role)
                elif role in after.roles and role not in before.roles:
                    added.append(role)

            if added:
                embed.add_field(name='Roles Added',
                                value=', '.join([r.mention for r in added]),
                                inline=False)

            if removed:
                embed.add_field(name='Roles Removed',
                                value=', '.join([r.mention for r in removed]),
                                inline=False)

            await embed.send(channel)
Exemple #2
0
    async def on_message_edit(self, before: discord.Message,
                              after: discord.Message):
        if not before.guild:
            return
        if before.author.bot:
            return
        channel = await self.check_log_channel(before.guild)
        if not channel:
            return

        if before.content != after.content:
            embed = Embed(author=before.author,
                          colour=discord.Colour.blue(),
                          footer='Modified At',
                          title='Message Edited',
                          description=f'**Channel:** {before.channel.mention}')

            embed.add_field(name='Before', value=before.content, inline=False)
            embed.add_field(name='After', value=after.content, inline=False)

            await embed.send(channel)
Exemple #3
0
    async def ping(self, ctx: Context):
        """Shows the bot's ping."""

        start = time.perf_counter()
        msg = await ctx.send('Pinging...')
        end = time.perf_counter()

        typing_latency = (end - start) * 1000
        websocket_latency = self.bot.latency * 1000

        start = time.perf_counter()
        await self.bot.settings.find_one({'guildId': ctx.guild.id})
        end = time.perf_counter()

        mongo_latency = (end - start) * 1000

        embed = Embed(title='\U0001f3d3 Pong!')
        embed.add_field(name='<a:typing:828718094959640616> | Typing',
                        value=f'`{typing_latency:.2f}ms`')
        embed.add_field(name='<a:settings:801424449542815744> | Websocket',
                        value=f'`{websocket_latency:.2f}ms`')
        embed.add_field(name='<:mongo:814706574928379914> | Database',
                        value=f'`{mongo_latency:.2f}ms`')

        await msg.edit(content=None, embed=embed)
Exemple #4
0
    async def on_member_remove(self, member: discord.Member):
        channel = await self.check_log_channel(member.guild)
        if not channel:
            return

        embed = Embed(
            author=member,
            title='Member Left',
            colour=discord.Colour.red(),
            footer=f'ID: {member.id}',
            description=
            (f'{member.mention} joined {humanize.naturaltime(member.joined_at, when=discord.utils.utcnow())}.\n'
             ))

        roles = member.roles
        roles.remove(member.guild.default_role)

        if roles:
            embed.add_field(name='Roles',
                            value=', '.join(r.mention for r in roles))

        await embed.send(channel)
Exemple #5
0
    async def on_message_delete(self, message: discord.Message):
        if message.author.bot:
            return
        channel = await self.check_log_channel(message.guild)
        if channel is None:
            return

        embed = Embed(author=message.author,
                      colour=discord.Colour.red(),
                      footer='Deleted At',
                      title='Message Deleted',
                      description=f'**Channel:** {message.channel.mention}')

        if message.content:
            embed.add_field(name='Content',
                            value=message.content,
                            inline=False)

        if message.attachments:
            embed.add_field(name='Attachments',
                            value=', '.join(f'{a.filename} ({a.content_type})'
                                            for a in message.attachments))

        await embed.send(channel)