基于Python的discord机器人回复错误(无限循环)

基于Python的discord机器人回复错误(无限循环),python,deep-learning,discord,Python,Deep Learning,Discord,我学习java已经有几个月了,对python还是相当陌生的。我目前正在为discord构建一个简单的深度学习AI机器人,它接收用户的消息,然后用预先建立的数据库中的消息进行回复。我已经成功地完成了人工智能,没有任何问题,但我目前在设置不和谐代码方面遇到了一些问题 下面是我负责从discord接收消息并在discord中回复用户的最后一个代码块 当前错误:在discord聊天中发送第一条消息后,我的代码不会停止执行,导致bot不间断地重复发送消息。这很可能是由函数中的while循环引起的 我尝试的

我学习java已经有几个月了,对python还是相当陌生的。我目前正在为discord构建一个简单的深度学习AI机器人,它接收用户的消息,然后用预先建立的数据库中的消息进行回复。我已经成功地完成了人工智能,没有任何问题,但我目前在设置不和谐代码方面遇到了一些问题

下面是我负责从discord接收消息并在discord中回复用户的最后一个代码块

当前错误:在discord聊天中发送第一条消息后,我的代码不会停止执行,导致bot不间断地重复发送消息。这很可能是由函数中的
while
循环引起的

我尝试的解决方案:python新手,我不确定如何以java中的方式创建布尔类型类变量。我试图使用布尔变量
new_message
作为while循环的条件语句。一旦bot发送回复,此变量将设置为false,以确保程序不会扫描bot自己的回复并导致无限循环。这个解决方案似乎不起作用,因为我似乎无法找到在函数之外创建
new_message
变量的方法

注意:我不能简单地删除while循环,因为一旦用户输入“quit”,我需要程序终止

此外,除了上面的问题,如果有人知道如何设置一个机器人,只有当机器人本身被用户标记时才会响应,请告诉我是如何做到的


提前谢谢

虽然我不确定你的代码应该做什么,但我坚信你看到的无限循环不是由你的
while
循环引起的,而是由你的
on_message
处理程序引起的。基本上,bot会看到您的消息,发送另一条消息作为响应,看到该消息,发送另一条消息作为响应,等等

你能做些什么来避免这种情况

async def on_消息(消息):
如果message.author==client.user:
返回
#同样可取
如果message.author.bot:
返回
#处理用户消息

我不确定我是否理解您的代码应该如何工作。无论发生什么情况,
new_message
在一次迭代后总是
False
。。。
@client.event
async def on_message(message):
     bot_testing = client.get_channel(0000000000)
     user_input = message.content
     new_message = True

  while new_message:
    if user_input.lower() == "quit": # type quit to stop the program
        print("Program Terminated")
        break

    results = model.predict([bag_of_words(user_input, words)])[0]
    results_index = numpy.argmax(results) # returns the greatest value's index
    tag = labels[results_index]

    print(results)
    print(tag)

    if results[results_index] > 0.9: # accuracy threshold for a database reply
        for tg in data["replyData"]:
            if tg['tag'] == tag:
                responses = tg['responses']

        await bot_testing.send(random.choice(responses))
        new_message = False
    else:
        await bot_testing.send("I'm not sure I understand. Please try again or ask a different question!")
        new_message = False

client.run('some-bot-code')