首页 > 解决方案 > 使用 discord.py 检测和踢 alt

问题描述

我想制作一个审核机器人来踢 alt 帐户(小于 10 天的帐户)我有whois命令,但它只显示帐户创建时间:

@client.command(name="whois", aliases=["memberinfo"])
async def whois(ctx, member:discord.Member =  None):

    

    if member is None:
        member = ctx.author
        roles = [role for role in ctx.author.roles]

    else:
        roles = [role for role in member.roles]

    embed = discord.Embed(title=f"{member}", colour=member.colour, timestamp=ctx.message.created_at)
    embed.set_footer(text=f"Requested by: {ctx.author}", icon_url=ctx.author.avatar_url)
    embed.set_author(name="User Info: ")
    embed.add_field(name="ID:", value=member.id, inline=False)
    embed.add_field(name="User Name:",value=member.display_name, inline=False)
    embed.add_field(name="Discriminator:",value=member.discriminator, inline=False)
    embed.add_field(name="Current Status:", value=str(member.status).title(), inline=False)
    embed.add_field(name="Current Activity:", value=f"{str(member.activity.type).title().split('.')[1]} {member.activity.name}" if member.activity is not None else "None", inline=False)
    embed.add_field(name="Created At:", value=member.created_at.strftime("%a, %d, %B, %Y, %I, %M, %p UTC"), inline=False)
    embed.add_field(name="Joined At:", value=member.joined_at.strftime("%a, %d, %B, %Y, %I, %M, %p UTC"), inline=False)
    embed.add_field(name=f"Roles [{len(roles)}]", value=" **|** ".join([role.mention for role in roles]), inline=False)
    embed.add_field(name="Top Role:", value=member.top_role, inline=False)
    embed.add_field(name="Bot?:", value=member.bot, inline=False)

    await ctx.send(embed=embed)
    return

我怎样才能做出类似的东西:

if member < 10 days:
    await member.kick
    await channel.send('Detected alt account and kicked it')

我也不想要完整的代码。我只需要解释如何做到这一点。谢谢

标签: pythonpython-3.xdiscorddiscord.py

解决方案


discord.Membercreated_at具有返回实例的属性datetime.datetime,您可以通过减去今天的日期并使用days属性来获得增量天数

created = member.created_at
now = datetime.now() # remember to `from datetime import datetime`
delta = (now - created).days

if delta < 10:
    await member.kick()
    await channel.send('Detected alt account and kicked it')

参考:


推荐阅读