on_message 事件禁用所有机器人命令

Posted

技术标签:

【中文标题】on_message 事件禁用所有机器人命令【英文标题】:on_message event disables all the bot commands 【发布时间】:2021-04-05 00:24:32 【问题描述】:

我有一个 on_message 事件来阻止具有“静音”角色的用户发送消息:

@client.event
async def on_message(ctx):
    muted=ctx.author.guild.get_role(673180122768998411)
    if muted in ctx.author.roles:
        await ctx.message.delete()

但是对于这个事件,机器人不会对所有命令做出反应。他们不工作。 示例命令:

@client.command(passContent = True)
@commands.has_role("????║Участники")
async def rank(ctx):
    return

【问题讨论】:

【参考方案1】:

你必须使用这个:

await client.process_commands(ctx)

因此,您的活动将如下所示:

@client.event
async def on_message(ctx):
    muted = ctx.author.guild.get_role(673180122768998411)
    if muted in ctx.author.roles:
        await ctx.delete()

    await client.process_commands(ctx)

【讨论】:

以上是关于on_message 事件禁用所有机器人命令的主要内容,如果未能解决你的问题,请参考以下文章

discord.py bot:on_message 检测机器人等待发送()消息

如何让机器人休眠并停止响应命令(或 on_messages)

discord.py,在没有 on_message() 事件的情况下通过通道 id 发送消息?

Discord.py on_message() 但仅用于私人消息

如何在“on_message”中提及某人

允许 Discord Rewrite 机器人响应其他机器人