如何使用 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 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);
});
因为 TextChannel.fetchMessages()
returns 一个 Promise,你不需要使用 Promise.resolve()
,存储返回值和所有这些东西:你可以这样做:
message.channel.fetchMessages({limit: 1}).then(console.log);
// this returns a Promise | Here you're using Promise.then()
我想做的是从解决 fetchMessages()
的承诺中获取信息,然后能够通过它提供的集合,然后 可以发送某些片段。
例如,机器人将列出 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);
});
因为 TextChannel.fetchMessages()
returns 一个 Promise,你不需要使用 Promise.resolve()
,存储返回值和所有这些东西:你可以这样做:
message.channel.fetchMessages({limit: 1}).then(console.log);
// this returns a Promise | Here you're using Promise.then()