Добавление счетчика ответов в reddit bot

У меня есть бот, который отвечает на комментарии / ответы, которые включают определенные ключевые слова. Для того, чтобы предотвратить человек от спам бот, я хочу , чтобы добавить импорт Praw импорт конфигурация импорт ОС Black_list = [] Счетчик = 0 Защита bot_giris (): г = Praw . Reddit ( username = config . Username , password = config . Password , client_id = config . Client_id , client_secret = config . client_secret , user_agent = "Reddit bot" ) return r def bot_calis ( r , comments_replied_to ): subreddit = r . subreddit ( 'gereksiz' ) для комментария в subreddit . комментарии ( limit = 10 ): если «Кое-что» в комментарии . тела и комментарий . id не в комментариях_replied_to и комментарии . автор ! = r . пользователя . me (): print ( "String found:" + comment . id ) print ( 20 * "-" ) print ( Комментарий автора комментария: " , комментарий . автор ) print ( 20 * " - " ) комментарий . ответ ( «Что-то еще» ) Счетчик + = 1 печать ( « Ответ » : + комментарий . id ) print ( 20 * "-" ) comments_replied_to . append ( comment . id ) с open ( "comments_replied_to.txt" , "a" ) как f : f . написать ( комментарий . ID + " п" ) времени . sleep ( 10 ) def get_saved_comments (): if not os . путь . isfile ( "comments_replied_to.txt" ): comments_replied_to = [] else : с open ( "comments_replied_to.txt" , "r" ) как f : comments_replied_to = f . read () comments_replied_to = list ( comments_replied_to ) comments_replied_to = list ( filter ( None , comments_replied_to )) return comments_replied_to r = bot_giris () comments_replied_to = get_saved_comments () while True : bot_calis ( r , comments_replied_to ), чтобы при достижении счетчиком определенного числа , например, 5 раз для каждого потока комментариев, я хочу, чтобы бот переставал отвечать на этот поток. Способ, которым я хочу это сделать, - добавить счетчик и увеличить его на 1 за каждый раз, когда бот отвечает на один поток комментариев. Вот код:

counter

python,praw,

0

Ответов: 2


0

Похоже, вы забыли инициализировать свою counterпеременную, написав counter = 0.


0

Вы могли бы попробовать добавить время охлаждения, например, игнорировать все ответы в течение 5 минут, а затем начать отвечать снова. Что-то вроде этого:

last = time.time()

def bot_calis(r, comments_replied_to):
  subreddit = r.subreddit('gereksiz')
  for comment in subreddit.comments(limit=10):
    if 'Something' in comment.body and comment.id not in comments_replied_to and comment.author != r.user.me():
      ...
      if Counter >= 5:
        # 5 minute cool down
        # or, just return here
        if time.time() - last > 5 * 60 * 1000:
          Counter = 0
        else:
          return
      last = time.time()
      Counter += 1
      comment.reply("Something else")
      ...
питон, права,
Похожие вопросы
Яндекс.Метрика