Add commands to return info on a user and process snowflakes
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
import discord
|
||||
from discord.ext import commands
|
||||
from datetime import datetime, timedelta
|
||||
from geeksbot.imports.utils import process_snowflake
|
||||
|
||||
|
||||
class Inspect(commands.Cog):
|
||||
def __init__(self, bot):
|
||||
self.bot = bot
|
||||
|
||||
@commands.command(aliases=['u'])
|
||||
async def user(self, ctx, member: discord.Member):
|
||||
em = discord.Embed(style='rich',
|
||||
title=f'{member.name}#{member.discriminator} ({member.display_name})',
|
||||
description=f'({member.id})',
|
||||
color=self.bot.embed_color)
|
||||
em.set_thumbnail(url=f'{member.avatar_url}')
|
||||
em.add_field(name=f'Highest Role:',
|
||||
value=f'{member.top_role.mention}',
|
||||
inline=True)
|
||||
em.add_field(name=f'Bot:',
|
||||
value=f'{member.bot}',
|
||||
inline=True)
|
||||
em.add_field(name=f'Joined Guild:',
|
||||
value=f'{self.create_date_string(member.joined_at, ctx.message.created_at)}',
|
||||
inline=False)
|
||||
em.add_field(name=f'Joined Discord:',
|
||||
value=f'{self.create_date_string(member.created_at, ctx.message.created_at)}',
|
||||
inline=False)
|
||||
em.add_field(name=f'Current Status:',
|
||||
value=f'{member.status}',
|
||||
inline=True)
|
||||
em.add_field(name=f"Currently{' ' + member.activity.type.name.title() if member.activity else ''}:",
|
||||
value=f"{member.activity.name if member.activity else 'Not doing anything important.'}",
|
||||
inline=True)
|
||||
count = 0
|
||||
async for message in ctx.channel.history(after=(ctx.message.created_at - timedelta(hours=1))):
|
||||
if message.author == member:
|
||||
count += 1
|
||||
em.add_field(name=f'Activity:',
|
||||
value=f'{member.display_name} has sent {count} '
|
||||
f'{"message" if count == 1 else "messages"} in the last hour to this channel.',
|
||||
inline=False)
|
||||
await ctx.send(embed=em)
|
||||
|
||||
@commands.command(aliases=['s'])
|
||||
async def snowflake(self, ctx, snowflake: int):
|
||||
try:
|
||||
snowflake = int(snowflake)
|
||||
except ValueError:
|
||||
await ctx.send('That is not a valid snowflake')
|
||||
if len(bin(snowflake))-2 < 63 or len(bin(snowflake))-2 > 64:
|
||||
await ctx.send('That is not a valid snowflake')
|
||||
creation_time, worker, process, counter = process_snowflake(snowflake)
|
||||
em = discord.Embed(title=str(snowflake),
|
||||
description=f'Created At: {creation_time.strftime("%c")}\n'
|
||||
f'Worker: {worker}\n'
|
||||
f'Process: {process}\n'
|
||||
f'Increment Counter: {counter}',
|
||||
color=self.bot.embed_color)
|
||||
await ctx.send(em)
|
||||
|
||||
|
||||
def setup(bot):
|
||||
bot.add_cog(Inspect(bot))
|
||||
Reference in New Issue
Block a user