我应该如何开始循环/任务?

时间:2020-10-07 12:48:51

标签: python python-3.x discord.py discord.py-rewrite

因此,我正在尝试使用Python 3.9.0和Discord.py编写Discord Bot。我已经开始编写一些代码,以及一些简单的命令,例如在机器人被召唤的通道中发送消息。

现在,我想每10秒运行一次循环(在此示例),但是我无法对其进行初始化。我应该怎么做?

我已经尝试过键入:vote_auto.start(),但是它说它缺少1个必需的positionnal参数:“ ctx”。

import discord
from discord.ext import commands, tasks
from itertools import cycle

bot = commands.Bot(command_prefix = '.')

@bot.event
async def on_ready():
     print("Gol.D.Roger Bot est prêt.")
     await vote_auto(ctx).start()

@bot.command()
async def votez(ctx):
     await ctx.send("N’oubliez pas d’aller VOTER ! C'est un nouveau mois qui 
     s'annonce et qui dit nouveau cycle dit RESET TOP-SITE ! Faites de votre 
     mieux pour nous donner la force. C'est aussi pour vous quon veut rester 
     au TOP ! :star_struck:  ET SURTOUT ! Cette semaine compte TRIPLE !!! 
     :fire: :cent: :clap:")
await ctx.send('https://onepieceanarchy.forumactif.com/t479-10-votes-et-recompenses')
await ctx.send('https://media1.tenor.com/images/4f02345231c710ae0a96098086a46c4f/tenor.gif?itemid=14816222')

 @tasks.loop(seconds=10)
  async def vote_auto(ctx):
      print('Loop Vote Begun')
      await ctx.send("N’oubliez pas d’aller VOTER ! C'est un nouveau mois qui s'annonce et qui dit nouveau cycle dit RESET TOP-SITE ! Faites de votre mieux pour nous donner la force. C'est aussi pour vous quon veut rester au TOP ! :star_struck:  ET SURTOUT ! Cette semaine compte TRIPLE !!! :fire: :cent: :clap:")
      await ctx.send('https://onepieceanarchy.forumactif.com/t479-10-votes-et-recompenses')
      await ctx.send('https://media1.tenor.com/images/4f02345231c710ae0a96098086a46c4f/tenor.gif?itemid=14816222')

     bot.run('NzYzMTIwNzI2MjI3MTU3MDEz.X3zFjw.butp19UlqX2h1Om9B6tG3Hr7riQ')

Here you can review my code !

如果有人可以帮助我,请

1 个答案:

答案 0 :(得分:1)

https://docs.pytest.org/en/latest/example/simple.html#incremental-testing-test-steps

task没有ctx参数,ctxDocs for discord.ext.tasks。考虑一下,任务中的ctx参数来自哪里?

async def vote_auto(ctx):应该只是async def vote_auto():

task.start()不是协程,您只需使用vote_auto.start()就可以开始执行任务。如评论中所述,您应该在任务中使用command invocation Context,然后使用channel.send而不是ctx.send