当前位置: 首页 > 知识库问答 >
问题:

为什么在我的命令后调用我的on_消息?

诸葛奇玮
2023-03-14

我的代码起作用了。只有一个问题,那就是在调用任何命令后,我的on_message被调用(这会导致一些副作用)

async def delete_on_swear(message):
    if not message:
        return
    db = sqlite3.connect('main.sqlite')
    cursor = db.cursor()
    try:
        guild_id = message.guild.id
    except AttributeError:
        return
    cursor.execute(f'SELECT word FROM badwords WHERE guild_id={guild_id}')
    swears = [swear[0] for swear in cursor.fetchall()]
    if not swears:
        return
    if bot.user == message.author:
        return
    for swearword in swears:
        if not message.channel.is_nsfw() and is_substring(message.content.lower(), swearword):
            await message.delete()
            await message.author.create_dm()
            await message.author.dm_channel.send(
                f'Hi {message.author}, you sent a message containing the following word: {swearword}'
            )
            return```

共有1个答案

霍锦
2023-03-14

on_message在机器人可以查看的任何通道中发送任何消息后运行。在您的on_message的顶部,放置以下代码以防止机器人对自己的消息执行操作:

if message.author == bot.user:
    return
 类似资料:
  • 我正在制作一个工作正常的不和谐机器人,但是我想开始使用齿轮,因为我认为这是编写代码的更好的方式,但是现在我的on_message不再工作了,它也没有显示任何错误信息,我在整个互联网和所有的解释对我都不起作用,所以我决定在这里问。这是我的代码:

  • 我正试图按照以下说明为Dash生成文档集:http://kapeli.com/docsets.问题是,脚本在wget之后不会继续,并且似乎不会抛出任何错误。当我把脚本复制到终端时,一切都很好。 我使用的是MacOS 10.8.4和默认的bash。 我查看了其他帖子,比如我的shell脚本在exec之后停止,但我没有在这里使用exec。 为什么脚本退出?

  • 问题内容: 我正在尝试编写一个超级简单的文件来在Go项目中运行测试。项目的依赖项已供应,但我想跳过这些测试。从命令行运行时,我只是做 但是,当我把它变成这样的时候: 该表达式将不被评估: 我如何获得make以类似shell的方式插值表达式的方法? 问题答案: 在Makefile配方部分中,您将需要使用escape 使用第二个:

  • 问题内容: 我有一个已创建的组件: 当我打开此页面时,我的中的每个页面都会被调用。如果我喜欢: 我还可以使用匿名函数: 然后它会按预期工作。为什么会这样? 问题答案: 您需要传递对函数的 引用 ,当您这样做时调用函数并传递给从返回的值。您可以使用以下三个选项之一: 1 。使用 2 。使用箭头功能 3 。或从返回函数

  • 所以我想用java编写一个Tic-Tac-Toe游戏。 现在点击一个按钮,我想把按钮的图像设置为“十字”或“圆圈”,但是一旦一个类型跟随代码,按钮就会消失,直到我悬停在它们上面,然后它们就会返回。 没有上面的代码会是什么样子 这里的项目结构