【发布时间】:2020-10-12 23:06:44
【问题描述】:
我有一个 Discord Python 机器人,我正在尝试运行一个后台任务,该任务将每隔 X 秒不断地向频道发送一条消息 - 不需要命令。目前有任意 5 秒用于测试目的。
这是有问题的 cog 文件(为提高效率而删除了导入和其他内容)
class TestCog(commands.Cog):
def __init__(self, bot):
self.bot = bot
self.mytask.start()
@tasks.loop(seconds=5.0)
async def mytask(self):
channel = client.get_channel(my channel id here)
await channel.send("Test")
def setup(bot):
bot.add_cog(TestCog(bot))
我有一种感觉,这是因为 self 参数是唯一传递的参数,但我有点困惑阅读 API 文档,了解这里究竟要做什么。
我试过client 而不是bot,我试过定义discord.Client()(但就我所读的内容而言,我不应该使用我一直试图避免的那个。
在使用实际命令的其他 cogs 中,我将其设置为这样有效:
@commands.command(name='test')
async def check(self, ctx):
if ctx.channel.name == 'channel name':
await ctx.send("Response message")
这让我相信我传递的参数是错误的。我明白,因为我正在传递 ctx 我可以获取频道名称,但我不太确定如何仅使用 self.尝试传递 ctx 参数时,我没有收到任何错误,但由于明显的原因,消息没有发送。
我到底错过了什么?感谢您的帮助!
【问题讨论】:
标签: python discord discord.py-rewrite