【问题标题】:Reddit is not callable PRAW Discord.PyReddit 不可调用 PRAW Discord.Py
【发布时间】:2020-09-20 04:41:33
【问题描述】:

当我尝试运行从 reddit 收集 meme 的脚本时,我收到以下错误:

Traceback (most recent call last):
  File "C:\Users\emirs\PycharmProjects\discordmasterbot\venv\lib\site-packages\discord\ext\commands\bot.py", line 892, in invoke
await ctx.command.invoke(ctx)
  File "C:\Users\emirs\PycharmProjects\discordmasterbot\venv\lib\site-packages\discord\ext\commands\core.py", line 797, in invoke
await injected(*ctx.args, **ctx.kwargs)
  File "C:\Users\emirs\PycharmProjects\discordmasterbot\venv\lib\site-packages\discord\ext\commands\core.py", line 92, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: 'Reddit' object is not callable

我触发.reddit 命令的代码是这样的:

@client.command(description="This command is not working right now")
async def reddit(self,ctx,subreddit: str =""):
    self.reddit = praw.Reddit(client_id=reddit_app_id, 
client_secret=reddit_app_secret,user_agent="MASTERBOT:½s:1.0")
    if self.reddit():
        chosen_subreddit = reddit_enabled_meme_subreddits[0]
        if subreddit:
            if subreddit in reddit_enabled_meme_subreddits:
                chosen_subreddit = subreddit
            submissions = self.reddit.subreddits(chosen_subreddit).hot()
        post_to_pick = random.randint(1,10)
        for i in range(0, post_to_pick):
            submissions = next(x for x in submissions if not x.stickied)
        await ctx.send(submissions.url)
    else:
        await ctx.send("This is not working")

这些是我的 id、secret 和 subreddits:

reddit_enabled_meme_subreddits = ["memes","dankmemes"]
reddit_app_secret = "SECRET"
reddit_app_id = "ID"

我已经导入了所有东西,当我查看其他人时,一切似乎都很好,但我的就是不工作!

【问题讨论】:

    标签: python discord.py reddit praw


    【解决方案1】:

    我认为你的问题是:

    if self.reddit():
    

    您正在尝试调用 praw.Reddit() 返回的内容。
    也许尝试删除括号。

    【讨论】:

    • 它似乎有效,但现在我收到错误消息:“在分配之前引用了局部变量'提交'”。即使我尝试更改“提交”的位置,也没有成功
    • 听起来代码没有到达所有 if 语句中。您能否添加打印语句以查看它的位置?
    • “打印报表”是什么意思?你的意思是“打印(self.reddit)”吗?
    • 在每个 if 语句中,只需打印出任何内容,这样您就可以看到哪些 if 语句是正确的,然后您可以从中缩小问题的来源,以及如果变量包含您认为它们所做的事情。
    • 它只打印“self.reddit”中的那个。其他人没有出现
    猜你喜欢
    • 2020-12-24
    • 1970-01-01
    • 2020-12-09
    • 2017-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-28
    • 2020-11-23
    相关资源
    最近更新 更多