コード例 #1
0
ファイル: notifications.py プロジェクト: Nexamic/yeet
    async def on_member_join(self, new_member):
        joins = [
            r['joins_channel_id'] for r in self.records
            if r["guild_id"] == new_member.guild.id
        ][0]
        ch = self.bot.get_channel(joins)
        if ch is None:
            return

        # Extended member join information.
        e = discord.Embed()
        e.colour = 0x7289DA
        s = sum(1 for m in self.bot.get_all_members() if m.id == new_member.id)
        e.title = str(new_member)
        e.add_field(name="Status",
                    value=str(new_member.status).title(),
                    inline=True)
        e.add_field(name='User ID', value=new_member.id, inline=True)
        e.add_field(name='Mutual Servers', value=f'{s} shared', inline=True)
        if new_member.bot:
            e.description = '**This is a bot account**'

        coloured_time = codeblocks.time_to_colour(new_member.created_at)

        e.add_field(name="Account Created", value=coloured_time)
        e.set_thumbnail(url=new_member.avatar_url)
        await ch.send(embed=e)
コード例 #2
0
ファイル: info.py プロジェクト: Nexamic/yeet
 async def info(self, ctx, *, member: typing.Union[discord.Member, discord.User] = None):
     """Shows info about a member.
     This cannot be used in private messages. If you don't specify
     a member then the info returned will be yours.
     """
     if member is None:
         member = ctx.author
     
     e = discord.Embed()
     e.description = member.mention
     e.set_footer(text='Account created').timestamp = member.created_at
     
     try:
         roles = [role.name.replace('@', '@\u200b') for role in member.roles]
         e.add_field(name='Roles', value=', '.join(roles), inline=False)
         voice = member.voice
         if voice is not None:
             voice = voice.channel
             other_people = len(voice.members) - 1
             voice_fmt = f'{voice.name} with {other_people} others' if other_people else f'{voice.name} alone'
             e.add_field(name='Voice Chat', value=voice_fmt, inline=False)
         status = str(member.status).title()
         
         if status == "Online":
             status = "🟢 Online\n"
         elif status == "Offline":
             status = "🔴 Offline\n"
         else:
             status = f"🟡 {status}\n"
         
         activity = member.activity
         try:
             activity = f"{discord.ActivityType[activity.type]} {activity.name}\n"
         except KeyError:  # Fix on custom status update.
             activity = ""
         
         coloured_time = codeblocks.time_to_colour(member.joined_at)
         e.add_field(name=f'Joined {ctx.guild.name}', value=coloured_time, inline=False)
         e.colour = member.colour
     except AttributeError:
         status = ""
         activity = ""
         pass
     
     shared = sum(1 for m in self.bot.get_all_members() if m.id == member.id)
     field_1_text = f"{status}ID: {member.id}\n{activity}"
     if shared - 1:
         field_1_text += f"Seen in {shared} other guilds."
     e.add_field(name="User info", value=field_1_text)
     e.set_author(name=str(member), icon_url=member.avatar_url or member.default_avatar_url)
     
     if member.bot:
         e.description += "\n**🤖 This user is a bot**"
         
     if member.is_on_mobile():
         e.description += "\n📱 Using mobile app."
     
     if member.avatar:
         e.set_thumbnail(url=member.avatar_url)
     await ctx.send(embed=e)
コード例 #3
0
    async def on_member_join(self, new_member):
        try:
            joins = [
                r['joins_channel_id'] for r in self.records
                if r["guild_id"] == new_member.guild.id
            ][0]
            ch = self.bot.get_channel(joins)
            if ch is None:
                return
        except IndexError:
            return

        # Extended member join information.
        e = discord.Embed()
        e.colour = 0x7289DA
        s = sum(1 for m in self.bot.get_all_members() if m.id == new_member.id)
        e.title = str(new_member)
        e.add_field(name='User ID', value=new_member.id, inline=True)
        e.add_field(name='Mutual Servers', value=f'{s} shared', inline=True)
        if new_member.bot:
            e.description = '**This is a bot account**'

        coloured_time = codeblocks.time_to_colour(new_member.created_at)

        e.add_field(name="Account Created", value=coloured_time, inline=False)
        e.set_thumbnail(url=new_member.avatar_url)

        try:
            await ch.send(embed=e)
        except discord.Forbidden:  # If you wanna f**k up your settings it's not my fault.
            pass
コード例 #4
0
ファイル: info.py プロジェクト: Nexamic/yeet
    async def server_info(self, ctx):
        """ Shows information about the server """
        guild = ctx.guild
        
        secret_member = copy.copy(guild.me)
        
        # figure out what channels are 'secret'
        text_channels = 0
        for channel in guild.channels:
            text_channels += isinstance(channel, discord.TextChannel)
        
        regular_channels = len(guild.channels)
        voice_channels = len(guild.channels) - text_channels
        mstatus = Counter(str(m.status) for m in guild.members)
        members = f'Total {guild.member_count} ({mstatus["online"]} Online)'
        
        e = discord.Embed()
        e.title = guild.name
        e.description = f"Owner: {guild.owner.mention}\nGuild ID: {guild.id}"
        e.description += f'\n\n{guild.member_count} Members ({mstatus["online"]} Online)' \
                         f"\n{regular_channels} text channels "
        if voice_channels:
            e.description += f"and {voice_channels} Voice channels"
            
        if guild.premium_subscription_count:
            e.description += f"\n{guild.premium_subscription_count} Nitro Boosts"
        
        if guild.discovery_splash:
            e.set_image(url=guild.discovery_splash)

        if guild.icon:
            e.set_thumbnail(url=guild.icon_url)
            e.colour = await get_colour(str(guild.icon_url))

        emojis = ""
        for emoji in guild.emojis:
            if len(emojis) + len(str(emoji)) < 1024:
                emojis += str(emoji)
        if emojis:
            e.add_field(name="Custom Emojis", value=emojis, inline=False)
        
        roles = [role.mention for role in guild.roles]
        e.add_field(name='Roles', value=', '.join(roles) if len(roles) < 20 else f'{len(roles)} roles', inline=False)
        e.add_field(name="Creation Date", value=codeblocks.time_to_colour(guild.created_at))
        e.set_footer(text=f"\nRegion: {str(guild.region).title()}")
        await ctx.send(embed=e)