Как вызвать функцию Discord внутри цикла - PullRequest
0 голосов
/ 06 августа 2020

Я новичок в Discord Py и asyncio. Я хочу, чтобы бот запускал функцию пять раз внутри l oop.

from discord.ext import commands
Bot = commands.Bot(command_prefix= '!')
a=0
@Bot.event
async def on_ready():
    print('Bot online')
@Bot.command()
async def msg(ctx):
   global a
   a=a+1
   await ctx.author.send(a)

for i in range(5):
   msg()
Bot.run('token')

К сожалению, это не работает без ручного ввода команды в канал (! Msg). Более того, он не делает этого в al oop. Как вызвать функцию Discord как стандартную функцию python?

1 Ответ

3 голосов
/ 06 августа 2020

Вы используете команду asyn c без ожидания

for _ in range(5):
    await msg()

Но ... Я очень уверен, что это вообще сработает, потому что вы хотите использовать функцию msg, лучшее решение -

a = 0
async def send_message_and_increment(ctx):
    global a
    a += 1
    await ctx.send(a) # send to text_channel the user was in
    await ctx.author.send(a) # send to the user (DM) that invoke the command 

@Bot.command()
async def msg(ctx):
   global a

    for _ in range(5):
        await send_message_and_increment(ctx)


...