如何实现Reddit关键词回复Bot随机选取关键词-回复对执行?
实现Reddit Bot随机选择关键词-回复对的方案
核心思路是把所有关键词-回复对统一存成列表,每次处理评论前随机打乱列表顺序,再按打乱后的顺序匹配,这样就不会固定按原顺序优先匹配某组关键词了。
具体修改步骤:
- 重构关键词-回复对为列表
把原来分散的变量整合为一个包含(关键词, 回复内容)元组的列表,同时修正你代码里的变量名笔误(比如penge_comment应该是hello_comment,koster_comment应该是goodbye_comment):
keyword_reply_pairs = [ (" hello ", "Hello"), (" goodbye", "Goodbye"), (" is it true? ", "It is true") ]
每次处理评论前随机打乱列表
用random.shuffle()在每次遍历评论前打乱列表顺序,这样每次匹配的优先级都是随机的。修改匹配逻辑
原来的if-elif是固定顺序匹配,现在改成遍历打乱后的列表,找到第一个匹配的关键词就回复,然后跳出循环,避免重复匹配。
修改后的完整代码:
import random import time # 把关键词-回复对整合成列表 keyword_reply_pairs = [ (" hello ", "Hello"), (" goodbye", "Goodbye"), (" is it true? ", "It is true") ] for submission in subreddit.hot(limit=10): print(submission.title) for comment in submission.comments: if hasattr(comment, "body"): comment_lower = comment.body.lower() # 每次处理评论前打乱关键词列表 random.shuffle(keyword_reply_pairs) # 遍历打乱后的列表找匹配项 for keyword, reply in keyword_reply_pairs: if keyword in comment_lower: print(comment.body) comment.reply(reply) break # 找到匹配后跳出,避免重复回复 # 处理完一个帖子的所有评论后,等待10分钟再扫描下一个 time.sleep(600)
注意点:
- 把
time.sleep(600)移到外层循环,避免处理每条评论都等10分钟(原来的逻辑会导致处理一条评论就停10分钟,效率极低)。 random.shuffle()是原地修改列表,每次调用都会打乱顺序,保证每次匹配的优先级随机。
内容的提问来源于stack exchange,提问作者Loopski
相关产品推荐
相关产品推荐

