@client.command()
async def reddit(ctx):
memes_submissions = reddit.subreddit('memes').hot()
post_to_pick = random.randint(1, 10)
for i in range(0, post_to_pick):
submission = next(x for x in memes_submissions if not x.stickied)
await ctx.send(submission.url)
这是我的代码。当我输入 .reddit
它应该找到一个随机的热备忘录 从rmemes。而不是给我一些新鲜的备忘录,它给我一个错误。
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'Command' object has no attribute 'subreddit'
据我所知,程序不知道什么是subreddit。但我认为它应该从PRAW中获取subreddit命令。我是这样定义的 reddit
:
reddit = praw.Reddit(client_id="id",
client_secret="secret",
user_agent="MASTERBOT")
我在想,可能是因为我写的东西或者定义的原因吧 user_agent
因为我不知道这有什么用。我把所有的东西都按照它们应该的样子导入了。每个人的代码似乎都在工作。可能是我的Python出了问题?我在3.8上运行。
同样的问题在你的命名空间中又发生了--你调用了你的命令 reddit
即使你已经创建了你的 reddit
命令外的变量。
试着重命名它。
reddit = praw.Reddit(client_id="id", ....)
@client.command(name="reddit") # this is what the command will be in discord
async def _reddit(ctx):
memes_submissions = reddit.subreddit('memes').hot()
post_to_pick = random.randint(1, 10)
for i in range(0, post_to_pick):
submission = next(x for x in memes_submissions if not x.stickied)
await ctx.send(submission.url)
你已经有了你的变量 reddit
在这里定义。
reddit = praw.Reddit(...)
所以,如果有一个函数定义成这样
async def reddit(...):
将会影射你在外面定义的变量, 如果你试图引用到 reddit
在函数中,它实际上是在查看 async def reddit(...):
而不是 reddit = praw.Reddit(...)
因为它是变量的最新定义。