代码之家  ›  专栏  ›  技术社区  ›  user9682247

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

  •  0
  • user9682247  · 技术社区  · 6 年前

    我想做的是从解决 fetchMessages() 然后能够浏览它提供的收藏 然后 能够发送某些片段。

    例如,bot将列出10条如下所示的消息 GalaxyDJx#2462: hi 如果可能的话,通过查找信息(例如用户名、鉴别器、消息内容),然后将每条信息设置为自己的变量,例如 var uname ,则, var discrm var 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);
    });
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Federico Grandi    6 年前

    自从 TextChannel.fetchMessages() 返回承诺,您不需要使用 Promise.resolve() ,存储返回的值和所有内容:您可以这样做:

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