Reddit бот: случайный ответ на комментарии - PullRequest
2 голосов
/ 19 марта 2020

Этот бот reddit предназначен для случайного ответа на комментарии в подредите, когда вызывается ключевое слово 'randomhelloworld' . Он отвечает, но всегда отображает один и тот же комментарий, если я не остановлю и не перезапущу проект. Как настроить код так, чтобы он всегда отображал случайный комментарий?

import praw
import random


random_answer = ['hello world 1', 'hello world 2', 'hello world 3']
QUESTIONS = ["!randomhelloworld"]
random_item = random.choice(random_answer)

def main():
    reddit = praw.Reddit(
        user_agent="johndoe",
        client_id="johndoe",
        client_secret="johndoe",
        username="johndoe",
        password="johndoe",
    )

    subreddit = reddit.subreddit("sandboxtest")
    for comment in subreddit.stream.comments():
            process_comment(comment)


def process_comment(comment):
    for question_phrase in QUESTIONS:
        if question_phrase in comment.body.lower():
         comment.reply (random_item)
        break


if __name__ == "__main__":
    main()

Ответы [ 2 ]

3 голосов
/ 19 марта 2020

Похоже, проблема в этой точке кода

random_item = random.choice(random_answer)
.
.
.
if question_phrase in comment.body.lower():
     comment.reply(random_item)

Вы присваиваете рандомизированное значение переменной в начале и используете его в приведенной ниже функции. Следовательно, оно всегда возвращает одно и то же значение.

Вы можете изменить его таким образом и попробовать.

if question_phrase in comment.body.lower():
    comment.reply(random.choice(random_answer))
1 голос
/ 19 марта 2020

Когда вы запускаете программу, вы назначаете случайный выбор random_item один раз. Тогда вы просто используете это, чтобы вернуться к каждому запросу. Чтобы сделать новый случайный выбор при каждом запросе, переместите случайный выбор до запроса.

import praw
import random


random_answer = ['hello world 1', 'hello world 2', 'hello world 3']
QUESTIONS = ["!randomhelloworld"]

def main():
    reddit = praw.Reddit(
        user_agent="johndoe",
        client_id="johndoe",
        client_secret="johndoe",
        username="johndoe",
        password="johndoe",
    )

    subreddit = reddit.subreddit("sandboxtest")
    for comment in subreddit.stream.comments():
            process_comment(comment)


def process_comment(comment):
    for question_phrase in QUESTIONS:
        if question_phrase in comment.body.lower():
          random_item = random.choice(random_answer)
          comment.reply (random_item)
        break


if __name__ == "__main__":
    main()
...