如何使用 fetchMessages() 获取一定数量的消息,然后以某种方式发送它们?

How to use fetchMessages() to fetch a certain amount of messages then send them in a certain way?

我想做的是从解决 fetchMessages() 的承诺中获取信息,然后能够通过它提供的集合,然后 可以发送某些片段。

例如,机器人将列出 10 条看起来像 GalaxyDJx#2462: hi 的消息,如果可能的话,它会查找信息(例如用户名、鉴别符、消息内容),然后将每条信息设置为自己的变量例如 var unamevar discrmvar msgcnt.

我从一条消息中得到的信息如下,我真正需要的是会员的用户名、鉴别符,以及他们发送的消息内容。

'439129579567972353' => Message {
  channel: TextChannel {
    type: 'text',
    id: '411925734970490880',
    name: 'galaxys-bot-testing',
    position: 3,
    parentID: '394174705655087104',
    permissionOverwrites: [Object],
    topic: '',
    nsfw: false,
    lastMessageID: '439131920736059402',
    guild: [Object],
    messages: [Object],
    _typing: Map {},
    lastMessage: [Object]
  },
  id: '439129579567972353',
  type: 'DEFAULT',
  content: '<@436985225546039337> fetch',
  author: User {
    id: '311283024312532993',
    username: 'GalaxyDJx',
    discriminator: '2462',
    avatar: 'IgnoreThis',
    bot: false,
    lastMessageID: '439131920736059402',
    lastMessage: [Object]
  },
  member: GuildMember {
    guild: [Object],
    user: [Object],
    _roles: [Array],
    serverDeaf: false,
    serverMute: false,
    selfMute: undefined,
    selfDeaf: undefined,
    voiceSessionID: undefined,
    voiceChannelID: undefined,
    speaking: false,
    nickname: null,
    joinedTimestamp: 1518280794719,
    lastMessageID: '439131920736059402',
    lastMessage: [Object]
  },
  pinned: false,
  tts: false,
  nonce: undefined,
  system: false,
  embeds: [],
  attachments: Collection {},
  createdTimestamp: 1524767050402,
  editedTimestamp: null,
  reactions: Collection {},
  mentions: MessageMentions {
    everyone: false,
    users: [Object],
    roles: Collection {},
    _content: '<@436985225546039337> fetch',
    _client: [Object],
    _guild: [Object],
    _members: null,
    _channels: null
  },
  webhookID: null,
  hit: null,
  _edits: []
}

我通过使用此代码获得此信息。

var promise1 = Promise.resolve(message.channel.fetchMessages({limit: 1}));

promise1.then(function(value) {
  console.log(value);
});

因为 TextChannel.fetchMessages() returns 一个 Promise,你不需要使用 Promise.resolve(),存储返回值和所有这些东西:你可以这样做:

message.channel.fetchMessages({limit: 1}).then(console.log);
//       this returns a Promise          |     Here you're using Promise.then()