В настоящее время я использую пакет 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()? Как я могу сделать эту работу для других отправителей?
ОБНОВЛЕНИЕ: Разрешенные - реквизированные жетоны и добавление условного обозначения для отправителя, по сути, черный список.
Спасибо. Для будущих читателей не забудьте включить доступ к прямым сообщениям для своего приложения на вкладке «Разрешения». После этого восстановите токены и токены доступа, чтобы изменения вступили в силу. Старые токены приведут к ошибке 401, и простое изменение без изменения разрешений не будет работать. – 7h3rAm