不和谐机器人,在python中按"x"数量删除消息



所以我创建的bot(用python)目前可以用命令"!删除所有消息。清楚all"。不过,我还想给它添加一个功能,这样人们就可以输入"x"要删除的是Amount,而不是all。这可能吗?还是我需要用另一种方式重做这个函数?我应该补充一句,我是python的新手,还在学习。

下面是我的代码:
if '!clear all' in message.content and message.author.permissions_in(message.channel).manage_messages:
await message.channel.send('__**This will delete all messages (even pinned)**__')
await message.channel.send('**Type:**')
await message.channel.send('```"!yes" to continue```')
await message.channel.send('```"!no" to stop```')
if '!no' in message.content and message.author.permissions_in(message.channel).manage_messages:
await message.channel.send('**This proccess has stopped**')
exit()
else:
if '!yes' in message.content and message.author.permissions_in(message.channel).manage_messages:
await message.channel.send('**This proccess will continue in:**')
await message.channel.send('**3**')
await asyncio.sleep(0.5)
await message.channel.send('**2**')
await asyncio.sleep(0.5)
await message.channel.send('**1**')
deleted = await message.channel.purge(limit=3000)
await message.channel.send('**All messages deleted. Have a nice day**'.format(deleted))
await asyncio.sleep(3)
deleted = await message.channel.purge(limit=3000)

多谢!

Discord.py实际上提供了实现类似这样的功能,您可以通过函数参数向命令添加参数,并且您可以要求discord.py使用转换器自动将它们转换为特定类型(例如integer/numbers)。

如果你还没有使用discord.pycommands,我建议你这样做,它帮助很大!

解决问题虽然没有这些功能,你可以把用户输入(这里message.contentsplit后每个空间(message_arguments = message.content.split())这将给你一个单词列表(message_arguments[0]命令,这里!clear, message_arguments1第二个参数,例如all或潜在的数量),从那里你需要检查数量,第二个参数是all还是通过使用int(message_arguments[1]),这里举个例子。一旦你有了这个号码,你可以简单地把它作为一个变量,用它来删除消息:await message.channel.purge(limit=variable_that_holds_a_number).

最新更新