Discord bot不会接收新消息

2024-10-01 00:30:51 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我在做一个奇怪的有点不和谐的机器人。它显示一组障碍物,并在字符串中添加您需要按的相应键。它为每个“…”添加一个“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)

没有错误消息,只要我输入'!“开始”,它显示级别,然后不断地说“失败”,直到我停止。 我不知道该怎么办,任何帮助都是有用的。谢谢


Tags: 字符串clientsendmessageifchannelcontentawait
1条回答
网友
1楼 · 发布于 2024-10-01 00:30:51

bot被困在一个循环中,它发送一条消息,然后处理该消息,从而导致它发送另一条消息,等等。您可以在on_message的开头添加一个检查,强制它忽略bot生成的消息:

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

相关问题 更多 >