在discord.js中创建等待消息的循环可以通过使用async/await和递归函数来实现。下面是一个示例代码:
async function waitForMessage(channel, author) {
const filter = (message) => message.author.id === author.id;
const options = { max: 1, time: 60000, errors: ['time'] };
try {
const collected = await channel.awaitMessages(filter, options);
const message = collected.first();
return message;
} catch (error) {
throw new Error('等待消息超时');
}
}
async function messageLoop(channel, author) {
try {
while (true) {
const message = await waitForMessage(channel, author);
// 处理收到的消息
console.log(`收到消息:${message.content}`);
}
} catch (error) {
console.error(error);
}
}
// 使用示例
const Discord = require('discord.js');
const client = new Discord.Client();
client.on('message', (message) => {
if (message.content === '!start') {
messageLoop(message.channel, message.author);
}
});
client.login('YOUR_DISCORD_BOT_TOKEN');
上述代码中,waitForMessage
函数用于等待指定用户在指定频道发送消息,并返回收到的消息。messageLoop
函数使用waitForMessage
函数创建一个循环,不断等待用户的消息并进行处理。在示例中,当收到!start
消息时,会启动消息循环。
请注意,这只是一个简单的示例,实际应用中可能需要根据具体需求进行适当的修改和扩展。
领取专属 10元无门槛券
手把手带您无忧上云