44 lines
No EOL
2 KiB
Python
44 lines
No EOL
2 KiB
Python
import discord
|
|
from discord.ext import commands
|
|
|
|
class UserCog(commands.Cog):
|
|
|
|
def __init__(self, bot):
|
|
self.bot = bot
|
|
|
|
# Commands
|
|
@commands.command(aliases=['whois'])
|
|
async def userinfo(self, ctx, member: discord.Member = None):
|
|
"""Get information about a given user"""
|
|
# Gather data
|
|
member = ctx.author if not member else member
|
|
roles = [role for role in member.roles]
|
|
default_role = discord.utils.get(member.guild.roles, name='@everyone')
|
|
role_mentions = [f'{role.mention}' for role in sorted(member.roles, key=lambda x: x.position, reverse=True) if role != default_role]
|
|
all_perms = [x for x in dir(ctx.channel.permissions_for(member))]
|
|
permissions = []
|
|
for perm in all_perms:
|
|
perm_name = perm
|
|
if getattr(ctx.channel.permissions_for(member), perm_name) is True:
|
|
permissions.append(perm_name.title().replace("_", " ").replace("Tts", "TTS"))
|
|
|
|
# Create embed
|
|
embed = discord.Embed(description = member.mention, color = member.color, timestamp = ctx.message.created_at)
|
|
|
|
embed.set_author(name = member, icon_url = member.avatar_url)
|
|
embed.set_thumbnail(url = member.avatar_url)
|
|
embed.set_footer(text = member.id)
|
|
|
|
embed.add_field(name = 'Joined', value = member.joined_at.strftime('%a, %d %B %Y, %I:%M %p UTC'), inline=True)
|
|
embed.add_field(name = 'Registered', value = member.created_at.strftime('%a, %d %B %Y, %I:%M %p UTC'), inline=True)
|
|
|
|
embed.add_field(name=f'Roles [{len(roles)}]', value=", ".join(role_mentions)+f', {default_role}', inline=False)
|
|
embed.add_field(name=f'Permissions [{len(permissions)}]', value=", ".join(permissions), inline=False)
|
|
|
|
|
|
embed.add_field(name='Nickname', value=member.nick if hasattr(member, 'nick') else 'None', inline=True)
|
|
|
|
await ctx.send(embed = embed)
|
|
|
|
def setup(bot):
|
|
bot.add_cog(UserCog(bot)) |