Jar*_*hen 8 javascript node.js discord discord.js
我正在编写一个 Discord 机器人,我想在其中执行命令!quote,它将从具有 id 的特定频道quotesID(可能是也可能不是!quote已发送的不同频道)中拉出一条随机消息。我一直在查看Discord.js的文档,但我找不到通过其 ID获取TextChannel然后使用 TextChannels.messages函数从而获取MessageManager和消息集合的方法。
我知道我可以使用公会msg.guild(msg触发器在哪里!quote)或获得 tex
我是 JavaScript 和 Discord.js 的新手,所以任何信息都有帮助。(我使用的是 Discord.js 版本 12.2.0)
小智 17
根据您的标题,您希望all在频道中发送消息。不只是其中的 100 个。由于每个请求可以获取的消息数量有上限,因此我们必须使用该before选项来执行分页以获取所有消息。
async function fetchAllMessages() {
const channel = client.channels.cache.get("<my-channel-id>");
let messages = [];
// Create message pointer
let message = await channel.messages
.fetch({ limit: 1 })
.then(messagePage => (messagePage.size === 1 ? messagePage.at(0) : null));
while (message) {
await channel.messages
.fetch({ limit: 100, before: message.id })
.then(messagePage => {
messagePage.forEach(msg => messages.push(msg));
// Update our message pointer to be the last message on the page of messages
message = 0 < messagePage.size ? messagePage.at(messagePage.size - 1) : null;
});
}
console.log(messages); // Print all messages
}
Run Code Online (Sandbox Code Playgroud)
小智 13
如果您想获取带有 id 的特定频道,您需要执行以下操作:
const channel = client.channels.cache.get("Your channel ID");
Run Code Online (Sandbox Code Playgroud)
然后,在此频道中收集消息(限制设置为最多 100 条消息,因此您不能在此频道中收集超过 100 条消息,除非您有自己的消息存储系统)。
channel.messages.fetch({ limit: 100 }).then(messages => {
console.log(`Received ${messages.size} messages`);
//Iterate through the messages here with the variable "messages".
messages.forEach(message => console.log(message.content))
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7381 次 |
| 最近记录: |