所以我在做一个奇怪的有点不和谐的机器人。它显示一组障碍物,并在字符串中添加您需要按的相应键。它为每个“…”添加一个“w”,为每个“***”添加一个“s”。在不和谐中,玩家必须输入正确的字符串才能通过关卡。因此,它可以正常工作和显示。调用函数是'!“开始”,这将显示标高。但是在我输入字符串之前我失败了。我想知道,为什么它会自动激活?我的message.content函数在该循环之外。我想这是因为我打字!去吧,它不会重置我的消息。代码如下:
@client.event
async def on_message(message):
global correct_answerS
correct_answerS = ""
obstacleList = []
for i in range (0, 24):
randNum = random.randint(1,2)
if randNum == 1:
obstacleList.append('...')
correct_answerS += 'w'
if randNum == 2:
obstacleList.append('***')
correct_answerS += 's'
if message.content == ('!practice'):
sky = str("```css\n A ... ... *** ...```")
skyembed = discord.Embed(title="!============================!")
skyembed.add_field(name='When you see three dots, it is a w. When you see 3 asteriks, it is an s.', value = sky)
await message.channel.send(embed=skyembed)
if message.content == ('wwsw'):
await message.channel.send("Success.")
if message.content == ('!go'):
randlev = (str("```css\n A "))
for i in range(0, 24):
randlev += (str(obstacleList[i]) + " ")
randlev += "```"
randlevembed = discord.Embed(title="!===============================================!")
randlevembed.add_field(name='Good luck!', value = randlev)
await message.channel.send(embed=randlevembed)
print(correct_answerS)
if message.content == (correct_answerS):
await message.channel.send("Success!")
else:
await message.channel.send("Fail.")
@client.event
async def on_ready():
print("Ready")
print(client.user.id)
print('--------------------------')
await client.change_presence(activity=discord.Game(name='up and away'))
client.run(Token)
没有错误消息,只要我输入'!“开始”,它显示级别,然后不断地说“失败”,直到我停止。 我不知道该怎么办,任何帮助都是有用的。谢谢
bot被困在一个循环中,它发送一条消息,然后处理该消息,从而导致它发送另一条消息,等等。您可以在
on_message
的开头添加一个检查,强制它忽略bot生成的消息:相关问题 更多 >
编程相关推荐