2016-10-11 14 views
2

В настоящее время я использую пакет tweepy в python для прослушивателя DM. Я хочу отправить ответ отправителю на получение их сообщения. У меня есть следующее:Автоматический ответ прямого сообщения с использованием Tweepy

class StdOutListener(StreamListener): 
    def __init__(self): 
     self.tweetCount = 0 

    def on_connect(self): 
     print("Connection established!!") 

    def on_disconnect(self, notice): 
     print("Connection lost!! : ", notice) 

    def on_data(self, status): 
     status = str(status) 
     try: 
      json_acceptable_string = status.replace('\\','') 
      #string to dict 
      status=json.loads(json_acceptable_string) 
      if 'direct_message' in status.keys(): 
       print '\n' 
       print status[u'direct_message'][u'sender_screen_name'] +' sent: '+ status[u'direct_message'][u'text'] 
       message=str(status[u'direct_message'][u'text']) 
       api.send_direct_message(screen_name=str(status[u'direct_message'][u'sender_screen_name']),text='Out of office now - will respond to you asap') 
       print 'auto response submitted' 
      else: 
       #not direct message flow 
       pass 
     except: 
      #not important flows - couldn't convert to json/not correct flow in stream 
      pass 
     return True 

def main(): 
    global api 
    try: 
     auth = OAuthHandler(consumer_key, consumer_secret) 
     auth.secure = True 
     auth.set_access_token(access_token, access_token_secret) 
     api = API(auth) 
     print(api.me().name) 
     stream = Stream(auth, StdOutListener()) 
     stream.userstream() 

    except BaseException as e: 
     print("Error in main()", e) 

if __name__ == '__main__': 
    main() 

По какой-то причине, я могу видеть, оператор печати пользователя и то, что они послали, но, когда он попадает в send_direct_message метод он висит. Как ни странно, если я сам сообщаю, я получаю шквал сообщений, когда он кончается. Это потому, что это on_data()? Как я могу сделать эту работу для других отправителей?

ОБНОВЛЕНИЕ: Разрешенные - реквизированные жетоны и добавление условного обозначения для отправителя, по сути, черный список.

ответ

1

ОБНОВЛЕНИЕ: Решено - регенерированные маркеры и добавить условие, чтобы проверить отправителя, по сути, черный список.

+0

Спасибо. Для будущих читателей не забудьте включить доступ к прямым сообщениям для своего приложения на вкладке «Разрешения». После этого восстановите токены и токены доступа, чтобы изменения вступили в силу. Старые токены приведут к ошибке 401, и простое изменение без изменения разрешений не будет работать. – 7h3rAm

 Смежные вопросы

  • Нет связанных вопросов^_^