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)
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)
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
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)