【问题标题】:Do an if statement after while loop discord.py在 while 循环 discord.py 之后执行 if 语句
【发布时间】:2021-04-25 15:08:14
【问题描述】:
import ...
client = discord.Client()

@client.event
async def on_message(message):

  counter = 0
  trigger = True

  while trigger:
    await asyncio.sleep(5)
    counter += 1

  if message.content.startswith('count'): await message.channel.send(counter)


@client.event
async def on_ready():
    
    print('Logged in as')
    print(client.user.name)
    print(client.user.id)
    print('------')
    
client.run(TOKEN)

我正在尝试做一个while循环。

循环有效,但是当我发送消息计数以查看计数器时,消息不会出现。如果我把 循环之前的 if 语句会说 0

请帮帮我

【问题讨论】:

  • 您的循环永远不会结束,因为trigger 始终是True。是否有任何代码可以更改trigger 的值?
  • 没想到这么快,谢谢
  • 但我希望循环不要结束所以......
  • 您需要将if 语句放入循环中。缩进在 Python 中很重要,因此 if 语句的缩进必须与 count += 1 语句的缩进相同。
  • 你能解释一下循环应该实现什么吗?因为它目前的编写方式,永远不会到达if message.content.startswith(...) 这一行。

标签: python loops discord discord.py


【解决方案1】:
async def token():
  global counter
  counter = 0
  while True:
    await asyncio.sleep(5)
    counter += 1

@client.event
async def on_message(message):

  if message.content.startswith('check'):
    await message.channel.send(counter)

client.loop.create_task(token())

【讨论】:

  • 虽然此代码可能会为问题提供解决方案,但最好添加有关其工作原理/方式的上下文。这可以帮助未来的用户学习并将这些知识应用到他们自己的代码中。解释代码时,您也可能会以赞成票的形式从用户那里获得积极的反馈。
  • @borchvm 谢谢我会
猜你喜欢
  • 2015-09-26
  • 2015-05-19
  • 2014-07-13
  • 1970-01-01
  • 2013-06-09
  • 2014-01-21
  • 2015-11-08
  • 2016-01-12
  • 2022-09-29
相关资源
最近更新 更多