Add roleinfo/userinfo, closes #71
This commit is contained in:
parent
433563d52d
commit
44d6b5675e
1 changed files with 112 additions and 1 deletions
|
@ -1,9 +1,11 @@
|
|||
import re
|
||||
from io import BytesIO
|
||||
|
||||
from discord import User
|
||||
from discord import File, Role, User
|
||||
from discord.ext import commands
|
||||
from discord_slash import SlashContext, cog_ext
|
||||
from discord_slash.utils.manage_commands import create_option
|
||||
from PIL import Image, ImageDraw
|
||||
|
||||
import jarvis
|
||||
from jarvis import config, jarvis_self, logo
|
||||
|
@ -11,6 +13,8 @@ from jarvis.data.robotcamo import emotes, names
|
|||
from jarvis.utils import build_embed, convert_bytesize, get_repo_hash
|
||||
from jarvis.utils.field import Field
|
||||
|
||||
guild_ids = [862402786116763668]
|
||||
|
||||
|
||||
class UtilCog(commands.Cog):
|
||||
"""
|
||||
|
@ -118,6 +122,113 @@ class UtilCog(commands.Cog):
|
|||
)
|
||||
await ctx.send(embed=embed)
|
||||
|
||||
@cog_ext.cog_slash(
|
||||
name="roleinfo",
|
||||
description="Get role info",
|
||||
guild_ids=guild_ids,
|
||||
options=[
|
||||
create_option(
|
||||
name="role",
|
||||
description="Role to get info of",
|
||||
option_type=8,
|
||||
required=True,
|
||||
)
|
||||
],
|
||||
)
|
||||
async def _roleinfo(self, ctx: SlashContext, role: Role):
|
||||
|
||||
fields = [
|
||||
Field(name="ID", value=role.id),
|
||||
Field(name="Name", value=role.name),
|
||||
Field(name="Color", value=str(role.color)),
|
||||
Field(name="Mention", value=f"`{role.mention}`"),
|
||||
Field(name="Hoisted", value="Yes" if role.hoist else "No"),
|
||||
Field(name="Position", value=str(role.position)),
|
||||
Field(
|
||||
name="Mentionable", value="Yes" if role.mentionable else "No"
|
||||
),
|
||||
]
|
||||
|
||||
embed = build_embed(
|
||||
title="",
|
||||
description="",
|
||||
fields=fields,
|
||||
color=str(role.color),
|
||||
timestamp=role.created_at,
|
||||
)
|
||||
embed.set_footer(text="Role Created")
|
||||
embed.set_thumbnail(url="attachment://color_circle.png")
|
||||
|
||||
im = Image.new("RGBA", size=(200, 200), color=(0, 0, 0, 0))
|
||||
canvas = ImageDraw.Draw(im)
|
||||
|
||||
color = role.color.to_rgb()
|
||||
color = list(color)
|
||||
color.append(255)
|
||||
color = tuple(color)
|
||||
canvas.rectangle([(0, 0), (200, 200)], fill=color)
|
||||
del canvas
|
||||
|
||||
with BytesIO() as image_bytes:
|
||||
im.save(image_bytes, "PNG")
|
||||
image_bytes.seek(0)
|
||||
color_circle = File(image_bytes, filename="color_circle.png")
|
||||
|
||||
await ctx.send(embed=embed, file=color_circle)
|
||||
|
||||
@cog_ext.cog_slash(
|
||||
name="userinfo",
|
||||
description="Get user info",
|
||||
guild_ids=guild_ids,
|
||||
options=[
|
||||
create_option(
|
||||
name="user",
|
||||
description="User to get info of",
|
||||
option_type=6,
|
||||
required=False,
|
||||
)
|
||||
],
|
||||
)
|
||||
async def _userinfo(self, ctx: SlashContext, user: User = None):
|
||||
if not user:
|
||||
user = ctx.author
|
||||
user_roles = user.roles
|
||||
if user_roles:
|
||||
user_roles = sorted(user.roles, key=lambda x: -x.position)
|
||||
_ = user_roles.pop(-1)
|
||||
fields = [
|
||||
Field(
|
||||
name="Joined",
|
||||
value=user.joined_at.strftime("%a, %b %d, %Y %I:%M %p"),
|
||||
),
|
||||
Field(
|
||||
name="Registered",
|
||||
value=user.created_at.strftime("%a, %b %d, %Y %I:%M %p"),
|
||||
),
|
||||
Field(
|
||||
name=f"Roles [{len(user_roles)}]",
|
||||
value=" ".join([x.mention for x in user_roles])
|
||||
if user_roles
|
||||
else "None",
|
||||
inline=False,
|
||||
),
|
||||
]
|
||||
|
||||
embed = build_embed(
|
||||
title="",
|
||||
description=user.mention,
|
||||
fields=fields,
|
||||
color=str(user_roles[0].color) if user_roles else "#FF0000",
|
||||
)
|
||||
|
||||
embed.set_author(
|
||||
name=f"{user.name}#{user.discriminator}", icon_url=user.avatar_url
|
||||
)
|
||||
embed.set_thumbnail(url=user.avatar_url)
|
||||
embed.set_footer(text=f"ID: {user.id}")
|
||||
|
||||
await ctx.send(embed=embed)
|
||||
|
||||
|
||||
def setup(bot):
|
||||
bot.add_cog(UtilCog(bot))
|
||||
|
|
Loading…
Add table
Reference in a new issue