特定频道中的Discord Bot删除消息

时间:2020-06-11 11:55:13

标签: python bots discord.py-rewrite

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:”?渠道?

是否可以通过命令而不是事件来完成这项工作?

感谢您的帮助。 :)

1 个答案:

答案 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)