gpt4 book ai didi

python - “上下文”对象没有属性 'reddit' Discord.PY

转载 作者:行者123 更新时间:2023-12-04 09:44:47 24 4
gpt4 key购买 nike

我正在尝试添加 .reddit命令我的机器人。这是我的代码:

 @client.command(name="random", aliases=["reddit"])
async def _random(ctx, subreddit: str = ""):
reddit = None
if reddit_app_id and reddit_app_secret:
reddit = praw.Reddit(client_id=reddit_app_id,client_secret=reddit_app_secret,user_agent="MASTERBOT:%s1.0" % reddit_app_id)
if reddit:
submissions = reddit.subreddit(subreddit).hot()
submission = next(x for x in submissions if not x.stickied)
await ctx.send(submissions.url)

我已经导入了所有内容,在出现此错误之前一切似乎都很好:
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'Command' object has no attribute 'randint'

据我了解,该程序不知道 randint 是什么。我检查了我是否打错了,但没有。一切似乎都很好。我在同一命令上遇到了另一个错误,但我设法修复了它。但是这个得到了我,我需要你的帮助。

这些是新的错误:
AttributeError: 'coroutine' object has no attribute 'url'

.
RuntimeWarning: Enable tracemalloc to get the object allocation traceback

最佳答案

你有 Cog(类)中的命令吗?

如果你不这样做,那么你应该删除 self ,因为它会假设这是 context 的名称目的。

@client.command(name="random", aliases=["reddit"])
async def _random( ctx, subreddit: str = ""):
reddit = None
if reddit_app_id and reddit_app_secret:
reddit = praw.Reddit(client_id=reddit_app_id,client_secret=reddit_app_secret,user_agent="MASTERBOT:%s1.0" % reddit_app_id)
if reddit:
chosen_subreddit = reddit_enabled_meme_subreddits[0]
if subreddit:
if subreddit in reddit_enabled_meme_subreddits:
chosen_subreddit = subreddit
submissions = reddit.subreddit(chosen_subreddit).hot()
post_to_pick = random.randint(1, 10)
for i in range(0, post_to_pick):
submission = next(x for x in submissions if not x.stickied)
await ctx.send(submission.url)
else:
await ctx.send("This is not working")

问题在于命令的名称 random ,因为这会污染 random 的命名空间模块。您可以通过重命名命令来绕过它。
async def random(....import random 发生冲突在代码的顶部。您可以使用 name= 设置命令的名称装饰器中的关键字参数。这就是人们会在不和谐中输入的名字。

尝试使用您获取随机提交的方法(减去多余的代码,只是相同的逻辑),它对我有用:

reddit = praw.Reddit(client_id="...", client_secret="...", user_agent="...")

@bot.command(name="reddit")
async def _reddit(ctx, subreddit: str = ""):
submissions = reddit.subreddit(subreddit).hot()
submission = next(x for x in submissions if not x.stickied)
await ctx.send(submission.url)

我唯一能想到的就是确保您拥有最新版本的 praw ,并且如果命令中还有其他任何您可能忽略的内容,那么这可能会影响它,尽管这只是猜测。

我会说尝试从头开始发出命令。从简单的东西开始,然后逐行添加,直到出现问题。然后你就会知道是什么导致了 RuntimeWarning等等。

很抱歉没有明确的答案。

关于python - “上下文”对象没有属性 'reddit' Discord.PY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62181858/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com