将 Twython 端点更新为新的 api 在 send_direct_message 上出错
Updating Twython endpoints to the new api is erroring on send_direct_message
经过一些研究,发现最新版本的 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
试图追踪此问题,非常感谢任何帮助!
编辑{我应该补充一点,我的应用凭据设置为读写和直接消息}
经过进一步的研究和一个晚上的睡眠,我重写了 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)
经过一些研究,发现最新版本的 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
试图追踪此问题,非常感谢任何帮助!
编辑{我应该补充一点,我的应用凭据设置为读写和直接消息}
经过进一步的研究和一个晚上的睡眠,我重写了 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)