我想从 subreddit 中获取模因。问题是当我尝试使用该方法获取模因时,subreddit('memes')
该方法返回一个不可迭代的“ListingGenerator”对象。
我想知道是否有任何方法可以将其转换为可迭代对象或使用 ASYNCPRAW 从 reddit 获取模因的任何其他方法。
这是函数:
async def meme(self, ctx):
subreddit = await reddit.subreddit('memes')
print(type(subreddit))
all_subs = []
print(subreddit.hot(limit=50))
for submission in subreddit.hot(limit=50):
all_subs.append(submission)
random_sub = random.choice(all_subs)
name = random_sub.title
url = random_sub.url
embed = discord.Embed(title=name)
embed.set_image(url=url)
await ctx.send(embed=embed)
这是我得到的错误:
Traceback (most recent call last):
File "C:\Users\ansel\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\ext\commands\core.py", line 85, in wrapped
ret = await coro(*args, **kwargs)
File "C:\Users\ansel\PycharmProjects\Transfer News\cogs\meme.py", line 48, in meme
for submission in subreddit.hot(limit=50):
TypeError: 'ListingGenerator' object is not iterable
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\ansel\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\ext\commands\bot.py", line 902, in invoke
await ctx.command.invoke(ctx)
File "C:\Users\ansel\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\ext\commands\core.py", line 864, in invoke
await injected(*ctx.args, **ctx.kwargs)
File "C:\Users\ansel\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\ext\commands\core.py", line 94, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: 'ListingGenerator' object is not iterable
是的,谢谢你指出。另一件事是,添加
async
它后仍然有错误,所以我不得不在函数中传递username
和password
变量asyncpraw.Reddit()
(即使在文档中另有说明)。