Похоже, вы забыли инициализировать свою counter
переменную, написав counter = 0
.
У меня есть бот, который отвечает на комментарии / ответы, которые включают определенные ключевые слова. Для того, чтобы предотвратить человек от спам бот, я хочу , чтобы добавить импорт 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
Вы могли бы попробовать добавить время охлаждения, например, игнорировать все ответы в течение 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")
...