1 回答
TA贡献1784条经验 获得超7个赞
你有 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等等。
很抱歉对此没有明确的答案。
添加回答
举报