Не допускать, чтобы скрипт Tweepy отвечал тем же упоминаниям - PullRequest
0 голосов
/ 02 декабря 2019

Я делаю бота с Python и Tweepy, который отвечает с изображением, когда он упоминается, но он продолжает отвечать тем же твитам. Я пытался использовать If, чтобы противостоять этому, но не работает.

import tweepy
import os
import time
import random

os.chdir ('images')

#Keys to API

consumer_key = ''
consumer_secret = ''
access_token = ''
access_token_secret =''

#Auth to API
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)    
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

user = api.me()
print (user.name)

def reply_bot():
    search = api.search(q='@KancolleSleep')
    for tweet in search:
        print (f'UserName: {tweet.user.screen_name}')
        name = tweet.user.screen_name
        message = []
        message += (tweet.text)
        message2 = (tweet.text)
        if message2 != message:
            print (f'Tweet: {tweet.text}')
            media_ids = []
            image1 = random.choice(os.listdir('.'))
            file = api.media_upload(image1)
            media_ids.append(file.media_id)
            print (image1)
            text = (f'@{name}')
            api.update_status(status=text, media_ids=media_ids, in_reply_to_status_id=tweet.id)
        else:
            print ("Tweet already answered")

while True:
    reply_bot()
    time.sleep(15)

Есть эффективный способ предотвратить это?

1 Ответ

2 голосов
/ 02 декабря 2019

Я предполагаю, что у каждого твита есть идентификатор. Вы можете просто сохранить список идентификаторов твитов, на которые ответил бот, и для каждого нового твита проверить, есть ли он уже в списке.

Вот пример:

already_answered = []
def reply_bot():
    search = api.search(q='@KancolleSleep')
    for tweet in search:
        # add your code
        if tweet.id not in already_answered:
            # add your code
            already_answered.append(tweet.id)
        else:
            print('tweet already answered')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...