我使用Python 3.6 IDLE编写了一个机器人,我想添加一个purge
命令,但我不知道如何添加它。你们中的一些人可以帮我提供任何例子或建议我会很高兴谢谢。
答案 0 :(得分:1)
@bot.command(pass_context=True)
async def purge(ctx, amount):
await bot.purge_from(ctx.message.channel, limit=amount)
非常确定这会奏效。
答案 1 :(得分:0)
@client.command(pass_context = True, aliases=['Clear'])
async def clear(ctx, number):
mgs = [] #Empty list to put all the messages in the log
number = int(number) #Converting the amount of messages to delete to an
integer
async for x in client.logs_from(ctx.message.channel, limit = number):
mgs.append(x)
await client.delete_messages(mgs)
答案 2 :(得分:0)
我自己创建了这个命令,并与您分享。
首先我会添加代码然后解释。
@MyBot.command(pass_context=True)
@commands.has_permissions(administrator=True)
async def clear(ctx, limit):
await ctx.message.delete()
limit = int(limit)
deleted = await ctx.channel.purge(limit=limit)
cofirmdelete_embed = discord.Embed(title='Delete Successfull!', description=f'Deleted {len(deleted)} messages in #{ctx.channel}', color=0x4fff4d)
await ctx.channel.send(embed=cofirmdelete_embed, delete_after=4.0)
@command.has_permissions(administrator=True)
以便此命令只能由管理员使用。您可以在此处使用任何不和谐权限,并根据需要将它们设置为 True
或 False
。例如:manage_messages=True
在 async def clear(ctx, limit)
中,limit
是您要删除的邮件数量。
ctx.message.delete()
删除您输入要清除的命令。也就是说,当你给bot命令:!clear
它会先删除这条命令,然后执行后者。
deleted
是我用来获取已删除邮件数量的变量。
await ctx.channel.purge(limit=limit)
。这里,purge
是 discord.py 库中的一个协程。它删除了用户添加的限制的消息。
在 confirmdelete_embed
中,我在添加 len(delete)
的地方添加了说明。这会计算已删除邮件的数量,然后将其添加到嵌入中。
这就是我能解释的全部。如果有什么事情发生或者你有任何疑问,我仍然在这里。随时问我。