如何解决如何在discord.py中使用参数循环异步函数?
@client.command()
async def cat(ctx):
tempurl = "b"
subreddit = await reddit.subreddit("cats")
allSubmissions = []
new = subreddit.new(limit = 1)
async for submission in new:
allSubmissions.append(submission)
randomSub = random.choice(allSubmissions)
url = randomSub.url
if tempurl != url:
if url.endswith('.jpg') or url.endswith('.jpeg') or url.endswith('.png'):
tempurl = url
print("\n"+url)
await ctx.send(url)
loop = asyncio.get_event_loop()
loop.run_until_complete(cat())
loop.close()
但是,使用 loop.run_until_complete(cat())
给了我输出:
TypeError: cat() missing 1 required positional argument: 'ctx'
解决方案
我没有做我正在做的事情,而是使用 discord.ext.task(如 Łukasz Kwieciński 所建议的)创建了一个后台循环,然后从命令函数调用该后台循环函数。
感谢 Łukasz Kwieciński 再次帮助我
@tasks.loop(seconds=30)
async def catSend(ctx):
tempurl = "bbbb"
subreddit = await reddit.subreddit("cats")
allSubmissions = []
new = subreddit.new(limit = 1)
async for submission in new:
allSubmissions.append(submission)
randomSub = random.choice(allSubmissions)
url = randomSub.url
if tempurl != url:
if url.endswith('.jpg') or url.endswith('.jpeg') or url.endswith('.png'):
tempurl = url
print(url)
await ctx.send(url)
else:
tempurl = url
@client.command()
async def cat(ctx):
catSend.start(ctx)
解决方法
我没有做我正在做的事情,而是使用了 discord.ext.task(根据 Łukasz Kwieciński 的建议)创建了一个后台循环,然后从命令函数中调用了该后台循环函数。
感谢 Łukasz Kwieciński 再次帮助我
tempurl = "bbbb"
@tasks.loop(seconds=30)
async def catSend(ctx):
global tempurl
subreddit = await reddit.subreddit("cats")
allSubmissions = []
new = subreddit.new(limit = 1)
async for submission in new:
allSubmissions.append(submission)
randomSub = random.choice(allSubmissions)
url = randomSub.url
if tempurl != url:
if url.endswith('.jpg') or url.endswith('.jpeg') or url.endswith('.png'):
tempurl = url
print(url)
await ctx.send(url)
else:
tempurl = url
@client.command()
async def cat(ctx):
catSend.start(ctx)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。