Send/Reply 使用 Twitter 直接发送消息 API v2
Send/Reply direct message using Twitter API v2
我有一个 nodejs 应用程序,我需要添加一个功能,我可以使用 Twitter 上的直接消息向用户发送调查,当用户回复时,应用程序将发送下一个问题等等(最好是如果我可以为预期的回复添加选项)。
我目前遇到的问题是发送直接消息,我发现的示例似乎适用于旧版本,不适用于 Twitter API v2。
下面是我试过但也不起作用的示例代码:
const Twit = require('twit');
const config = require('./config.js');
const T = new Twit(config);
const stream = T.stream('user');
const SendMessage = user => {
const { screen_name, name } = user.source;
const obj = {
screen_name: screen_name,
text: "Hi there!"
};
timeout = 5000;
setTimeout(() => {
T.post("direct_messages/new", obj)
.catch(err => {
console.error("error", err.stack);
})
.then(result => {
console.log(`Message sent successfully To ${screen_name}!`);
});
}, timeout);
};
user = new Object;
user.source = { screen_name: 'name', name: 'userDisplayedName' };
SendMessage(user);
输出错误:
throw er; // Unhandled 'error' event
^
Error: Bad Twitter streaming request: 404
at Object.exports.makeTwitError (/../node_modules/twit/lib/helpers.js:74:13)
at Request.<anonymous> (/../node_modules/twit/lib/streaming-api-connection.js:96:29)
at Request.emit (events.js:327:22)
at IncomingMessage.<anonymous> (/../node_modules/request/request.js:1083:12)
at Object.onceWrapper (events.js:421:28)
at IncomingMessage.emit (events.js:327:22)
at endReadableNT (_stream_readable.js:1327:12)
at processTicksAndRejections (internal/process/task_queues.js:80:21)
Emitted 'error' event on StreamingAPIConnection instance at:
at Request.<anonymous> (/../node_modules/twit/lib/streaming-api-connection.js:99:14)
at Request.emit (events.js:327:22)
[... lines matching original stack trace ...]
at processTicksAndRejections (internal/process/task_queues.js:80:21) {
code: null,
allErrors: [],
twitterReply: '',
statusCode: 404
}
有谁知道如何使用 Twitter API v2 和 Nodejs 发送直接消息?
在撰写此答案时,私信 API 尚未迁移到 v2,因此您需要继续使用 Twitter API v1.1 私信。
这里的错误不在发送,而是在接收 -> Bad Twitter streaming request
-> 404
.这是因为您找到的代码正在尝试使用 Twitter 用户流 API,该流已于 2018 年删除。这些已被替换为帐户 Activity API(webhooks)。您将需要构建一个应用程序来接收私信的 webhook 事件,然后 post 回复。这些都在 API.
的 v1.1 中
我有一个 nodejs 应用程序,我需要添加一个功能,我可以使用 Twitter 上的直接消息向用户发送调查,当用户回复时,应用程序将发送下一个问题等等(最好是如果我可以为预期的回复添加选项)。
我目前遇到的问题是发送直接消息,我发现的示例似乎适用于旧版本,不适用于 Twitter API v2。
下面是我试过但也不起作用的示例代码:
const Twit = require('twit');
const config = require('./config.js');
const T = new Twit(config);
const stream = T.stream('user');
const SendMessage = user => {
const { screen_name, name } = user.source;
const obj = {
screen_name: screen_name,
text: "Hi there!"
};
timeout = 5000;
setTimeout(() => {
T.post("direct_messages/new", obj)
.catch(err => {
console.error("error", err.stack);
})
.then(result => {
console.log(`Message sent successfully To ${screen_name}!`);
});
}, timeout);
};
user = new Object;
user.source = { screen_name: 'name', name: 'userDisplayedName' };
SendMessage(user);
输出错误:
throw er; // Unhandled 'error' event
^
Error: Bad Twitter streaming request: 404
at Object.exports.makeTwitError (/../node_modules/twit/lib/helpers.js:74:13)
at Request.<anonymous> (/../node_modules/twit/lib/streaming-api-connection.js:96:29)
at Request.emit (events.js:327:22)
at IncomingMessage.<anonymous> (/../node_modules/request/request.js:1083:12)
at Object.onceWrapper (events.js:421:28)
at IncomingMessage.emit (events.js:327:22)
at endReadableNT (_stream_readable.js:1327:12)
at processTicksAndRejections (internal/process/task_queues.js:80:21)
Emitted 'error' event on StreamingAPIConnection instance at:
at Request.<anonymous> (/../node_modules/twit/lib/streaming-api-connection.js:99:14)
at Request.emit (events.js:327:22)
[... lines matching original stack trace ...]
at processTicksAndRejections (internal/process/task_queues.js:80:21) {
code: null,
allErrors: [],
twitterReply: '',
statusCode: 404
}
有谁知道如何使用 Twitter API v2 和 Nodejs 发送直接消息?
在撰写此答案时,私信 API 尚未迁移到 v2,因此您需要继续使用 Twitter API v1.1 私信。
这里的错误不在发送,而是在接收 -> Bad Twitter streaming request
-> 404
.这是因为您找到的代码正在尝试使用 Twitter 用户流 API,该流已于 2018 年删除。这些已被替换为帐户 Activity API(webhooks)。您将需要构建一个应用程序来接收私信的 webhook 事件,然后 post 回复。这些都在 API.