Как я могу остановить эту команду discord bot без перезапуска бота?

#python #python-3.x #discord.py

#python #python-3.x #discord.py

Вопрос:

Как я могу остановить эту команду discord bot без перезапуска бота?

 @bot.command()
async def spam(ctx, *args):
    response = ""
    for arg in args:
        response = response   " "   arg
    while True:
        await ctx.channel.send(response)
        time.sleep(1)
 

Ответ №1:

Вы можете просто использовать переменную

 bot.some_var = True

while bot.some_var:
    await ctx.send(response)
    if 'some condition met':
        loop = False
 

Если вы хотите остановить цикл в команде:

 bot.some_var = True

@bot.command()
async def spam(ctx, *args):
    response = ' '.join(args)

    while bot.some_var:
        await ctx.send(response)
        await asyncio.sleep(1)


@bot.command()
async def stop(ctx):
   bot.some_var = False
 

Также две вещи:

  1. Вы можете просто str.join(list) вместо этого странного цикла for, который вы создали
  2. используйте asyncio.sleep вместо time.sleep , чтобы ваш код не блокировался