【问题标题】:I want my Discord bot to answer "abc def" when someone writes "abc" but it keeps spamming "abc def"我希望我的 Discord 机器人在有人写“abc”时回答“abc def”,但它不断发送垃圾邮件“abc def”
【发布时间】:2021-10-07 04:44:14
【问题描述】:

我正在使用 Python 编写一个 Discord 机器人,这是命令之一。

我希望机器人在我每次写“abc”时都回答“abc def”,但它一直在发送垃圾邮件“abc def”。

@commands.Cog.listener()
async def on_message(self, message):
        if "abc" in message.content.lower():
            await message.channel.send('abc def')

【问题讨论】:

    标签: python discord discord.py bots


    【解决方案1】:

    这是因为您发送的消息包含您在 if 语句中比较的文本,这会导致递归:调用侦听器,发送消息,然后因为它自己的消息而再次调用,在turn 使其发送消息,然后再次调用它,依此类推。

    您可以通过检查message 的发件人是否等于机器人用户来修复它,如果不是则仅发送消息。

    【讨论】:

    • 我尝试这样做:botid = @commands.Cog.listener() async def on_message(self, message): if message.author.id != botid: if "סתיו" in message .content.lower(): # 在这种情况下不要用“Tutorial”这个词来响应,否则你会递归调用 on_message 事件 await message.channel.send('סתיו טוראל ') 但它说“botid”没有定义
    • @tal 代码在 cmets 中不可读,尤其是对于像 python 这样的面向空格的语言。将代码编辑到您的初始问题中,使其可读。
    猜你喜欢
    • 1970-01-01
    • 2017-09-09
    • 2014-08-11
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    相关资源
    最近更新 更多