所以我现在想要实现的是,找到并编写一个代码,这样每当我清除频道时,它都会首先检查它是否有任何消息。如果没有,那么它会发送一个错误。唯一的问题是我不知道客户端是否可以先检查上面是否有任何消息。如果有人有任何想法或例子,我会很高兴知道!
答案是这样的:
@commands.command()
async def clear(self, ctx, *, limit=100):
await ctx.message.delete()
channel = ctx.channel
messages = await channel.history(limit=123).flatten()
if not messages:
await ctx.channel.send("I am really sorry but I can not purge an empty channel!")
return
else:
try:
await channel.purge(limit = limit)
return
except discord.Forbidden:
return await ctx.channel.send('I do not have perms')
答案 0 :(得分:1)
您可以使用 messages = await channel.history(limit=123).flatten()
获取包含频道消息的列表。限制用于指定要回读的最大消息数。
您可以检查该列表是否为空以检查频道中是否有消息。
API 参考:https://discordpy.readthedocs.io/en/latest/api.html?highlight=history#discord.TextChannel.history