Python 不和谐机器人赢了';不要接受新的信息

Python 不和谐机器人赢了';不要接受新的信息,python,discord.py,Python,Discord.py,所以我在做一个奇怪的有点不和谐的机器人。它显示一组障碍物,并在字符串中添加您需要按的相应键。它为每个“…”添加一个“w”,为每个“***”添加一个“s”。在不和谐中,玩家必须输入正确的字符串才能通过关卡。因此,它可以正常工作和显示。调用函数是'!“开始”,这将显示标高。但是在我输入字符串之前我失败了。我想知道,为什么它会自动激活?我的message.content函数在该循环之外。我想这是因为我打字!去吧,它不会重置我的消息。代码如下: @client.event 异步def on_消息(消息)

所以我在做一个奇怪的有点不和谐的机器人。它显示一组障碍物,并在字符串中添加您需要按的相应键。它为每个“…”添加一个“w”,为每个“***”添加一个“s”。在不和谐中,玩家必须输入正确的字符串才能通过关卡。因此,它可以正常工作和显示。调用函数是'!“开始”,这将显示标高。但是在我输入字符串之前我失败了。我想知道,为什么它会自动激活?我的message.content函数在该循环之外。我想这是因为我打字!去吧,它不会重置我的消息。代码如下:

@client.event
异步def on_消息(消息):
全球正确答案
正确答案=“”
障碍列表=[]
对于范围(0,24)内的i:
randNum=random.randint(1,2)
如果randNum==1:
obstacleList.append(“…”)
正确答案+='w'
如果randNum==2:
obstacleList.append(“***”)
正确答案+='s'
如果message.content==(“!practice”):
sky=str(“``css\n A……***……```”)
skyembed=discord.Embed(title=“!========================================!”)
skyembed.add_字段(name=,当你看到三个点时,它是一个w。当你看到三个星号时,它是一个s.,value=sky)
等待message.channel.send(嵌入=skyembed)
如果message.content==('wwsw'):
等待message.channel.send(“成功”)
如果message.content==(“!go”):
randlev=(str(“``css\n A”))
对于范围(0,24)内的i:
randlev+=(str(障碍列表[i])+“”)
randlev+=“```”
RandleveEmbed=discord.Embed(title=“!=======================================================!”)
添加字段(name='Good luck!',value=randlev)
等待message.channel.send(嵌入=随机嵌入)
打印(正确答案)
如果message.content==(正确答案):
等待消息。频道。发送(“成功!”)
其他:
等待message.channel.send(“失败”)
@客户端事件
_ready()上的异步定义:
打印(“就绪”)
打印(client.user.id)
打印('----------------------------')
等待客户。改变状态(活动=discord.Game(name='up and away'))
client.run(令牌)
没有错误消息,只要我输入'!“开始”,它显示级别,然后不断地说“失败”,直到我停止。
我不知道该怎么办,任何帮助都是有用的。谢谢。

机器人程序陷入了一个循环中,它正在发送一条消息,然后处理该消息,从而导致它发送另一条消息,等等。您可以在\u message的
开头添加一个复选框,强制它忽略机器人程序生成的消息:

@client.event
async def on_message(message):
    if message.author.bot:
        return 
    ...

我不认为它看到了自己的信息,而是认为我的“正确答案”文本是“!go',这显然是不正确的。@Lionguy7机器人默认情况下会收到自己的消息。你必须在你自己的代码中更正它。我补充了他所说的,但它仍然不起作用。它只打印了1个“失败”,但在结束之前它仍然不允许我键入正确的答案。