TIA为您的帮助和道歉,我是一个新手,所以这可能是一个愚蠢的问题。我进行了搜索,找不到关于如何使不和谐的bot(在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:”开头时才响应,我能否让该机器人仅在特定位置查找“ Cluebot:”?渠道?
是否可以通过命令而不是事件来完成这项工作?
感谢您的帮助。 :)
答案 0 :(得分: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)