首页 > 解决方案 > 让 reddit bot 生成对提交的随机回复

问题描述

我正在开发一个使用 PRAW 从文本文件生成链接的机器人。这是我的代码:

import praw
from random import choice
import re

reddit = praw.Reddit(user_agent='XXX',
                  client_id='XXX',
                  client_secret='XXX',
                  username='XXX',
                  password='XXX')

with open("links.txt") as f:
    lines = [l.rstrip() for l in f]

subreddit = reddit.subreddit('SUBREDDIT')

for submission in subreddit.stream.submissions:
    if re.search("!TRIGGER WORD", submission.title, re.IGNORECASE):
        submission.reply(choice(lines))

运行我的脚本后,我收到以下错误消息:

Traceback (most recent call last):
  File "main.py", line 16, in <module>
    for submission in subreddit.stream.submissions:
TypeError: 'method' object is not iterable

有任何想法吗?

编辑:我在这行之后忘记了括号:

for submission in subreddit.stream.submissions:

它应该如下所示:

for submission in subreddit.stream.submissions():

或这个:

for submission in subreddit.stream.submissions(skip_existing=True):

后者只会在流启动后寻找新的提交。如果您想用随机选择进行回复,但不使用文件,您可以这样做:

创建 reddit 实例:

reddit = praw.Reddit(client_id="my client id",
                     client_secret="my client secret",
                     user_agent="my user agent",
                     username="my username",
                     password="my password")

标签: pythonredditpraw

解决方案


您发布的代码与回溯中的代码不同。您发布的代码应该可以工作;而您的回溯中的代码表明您忘记调用submissions. 那条线应该是

for submission in subreddit.stream.submissions():

或者

for submission in subreddit.stream.submissions(skip_existing=True):

但不是

for submission in subreddit.stream.submissions:

推荐阅读