Ошибка обновления конечных точек Twython до нового API на send_direct_message - PullRequest
0 голосов
/ 04 декабря 2018

Проведя некоторое исследование и обнаружив, что в последней версии Twython все еще используются предыдущие конечные точки для некоторых функций (пока что получают и отправляют прямые сообщения), я обновил вызовы конечной точки следующим образом.

def get_direct_messages(self, **params):
    return self.get('direct_messages/events/list', params=params)

и

def send_direct_message(self, **params):
    # return self.post('direct_messages/new', params=params)
    return self.post('direct_messages/events/new', params=params)

Первый теперь работает, как задумано, и получает мои сообщения.Позже, с другой стороны, все еще дает мне следующую неописуемую ошибку

TwythonError('An error occurred processing your request.')

До этого была

twython.exceptions.TwythonError: Twitter API returned a 404 (Not Found), Sorry, that page does not exist.

Эта прогрессия заставляет меня поверить, что я нахожусь справапуть, и теперь мне интересно, если это просто мой запрос не был сформирован правильно?

class Messages:
keys = creds.set_keys()
twitter = Twython(keys["key_twitter"],
                  keys["secret_twitter"],
                  keys["token_twitter"],
                  keys["token_secret_twitter"])

    def send_test_msg(self):
        try:
            self.twitter.send_direct_message(type='message_create', recipient_id="raelonmasters", message_data="first test!")
        except Exception as e:
            pprint.pprint(e)

Я ссылался на официальные документы

https://developer.twitter.com/en/docs/direct-messages/sending-and-receiving/api-reference/new-event

впытаясь отследить это, и любая помощь очень ценится!

edit {Я должен добавить, что мои учетные данные приложения настроены на чтение, запись и отправку сообщения}

1 Ответ

0 голосов
/ 05 декабря 2018

После дальнейших исследований и ночного сна я переписал функцию api, чтобы позволить мне отправлять сообщения.

twython / api.py

    def post_message(self, endpoint, userid, msg, version='1.1'):
    return self.request('direct_messages/events/new',
                        'POST', params='{"event": {"type": "message_create", '
                                       '"message_create": {"target": {"recipient_id": "'+userid+'"}, '
                                       '"message_data": {"text": "'+msg+'"}}}}', version=version)
...