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 中