Discord Bot 删除特定频道中的消息
Posted
技术标签:
【中文标题】Discord Bot 删除特定频道中的消息【英文标题】:Discord Bot Delete Messages in Specific Channel 【发布时间】:2020-10-01 01:31:04 【问题描述】:TIA 为您的帮助和道歉,我是新手,所以这可能是一个愚蠢的问题。我已经搜索过了,但找不到任何关于如何使不和谐机器人(在 Python 中)仅在特定频道中删除消息的具体内容。我希望删除发送到特定频道的所有消息,通过 PM 发送给用户的内容以及更改用户的角色。
有没有办法使用 on_message 并在特定频道中指定?
@client.event
async def on_message(message):
user = message.author
if message.content.startswith("Cluebot:"):
await message.delete()
await user.send("Yes?")
await user.remove_roles(get(user.guild.roles, "Investigator"))
我遇到的问题是我也在使用现在不再起作用的命令,因为机器人只在消息以“Cluebot:”开头时才会响应我可以让机器人只在特定的渠道?
是否可以通过命令而不是事件来完成这项工作?
感谢您的帮助。 :)
【问题讨论】:
抱歉!我找到了一种解决方法:@client.command() async def reveal(ctx, *, answer): user=ctx.message.author if answer == solution: await ctx.message.delete() await user.send( "你是赢家!") await user.remove_roles(get(user.guild.roles, "Investigator")) else: await user.remove_roles(get(user.guild.roles, "Investigator")) await ctx. message.delete() await user.send("对不起," + answer + "不是正确答案。") 【参考方案1】:我遇到的问题是我也在使用现在不再起作用的命令,因为机器人只在消息以“Cluebot:”开头时才会响应我可以让机器人只寻找“Cluebot:”吗?在特定频道中?
关于这个问题的线索是:
await bot.process_commands(message)
正如文档所说 Without this coroutine, none of the commands will be triggered.
关于您可以尝试按 ID 使用 get_channel
然后清除它的主要问题:
例如。
@client.event
async def on_message(message):
purgeChannel = client.get_channel([CHANNEL ID]])
await purgeChannel.purge(limit=1)
您可以将check
添加到purge()
以检查是否删除特定消息:
例如:
def check(message):
return message.author.id == [author's ID]
@client.event
async def on_message(message):
purgeChannel = client.get_channel([CHANNEL ID]])
await purgeChannel.purge(limit=1, check=check)
【讨论】:
以上是关于Discord Bot 删除特定频道中的消息的主要内容,如果未能解决你的问题,请参考以下文章