所以我创建的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.py
或commands
,我建议你这样做,它帮助很大!
解决问题虽然没有这些功能,你可以把用户输入(这里message.content
split
后每个空间(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)
.