Próbuję zrobić Reddit Bot z Prawa, ale wielokrotnie reaguje na ten sam komentarz.

Oto mój kod:

keyphrases = ["test","test2","test3"]

for comment in subreddit.stream.comments(skip_existing=True):
    for keyphrase in keyphrases:
        if keyphrase in comment.body:
            try:
                comment.reply("hi")
            except:
                print("to frequent")
0
anytarsier67 24 lipiec 2020, 05:34

1 odpowiedź

Zastanów się, co się dzieje, gdy komentarz ma w nim wiele keyfery. Zgodnie z tym kodem sprawdzimy dla pierwszej keyfrazy, a następnie odpowiemy, a następnie w następnej iteracji pętli, sprawdzamy drugi keyfrazę i odpowiedz ponownie i tak dalej.

Jeśli chcesz tylko jedną odpowiedź, nawet jeśli w komentarzu znajdują się wiele słów kluczowych, możesz mieć break z pętli, gdy znajdziesz pierwsze dopasowanie słów kluczowych:

for keyphrase in keyphrases:
    if keyphrase in comment.body:
        try:
            comment.reply("hi")
            break
        except:
            print("too frequent")

{ {X0}} Słowo kluczowe wychodzi z pętli bez wykonywania kolejnych iteracji.

1
jarhill0 28 lipiec 2020, 16:52