多步命令和消息收集器 discord.js
Posted
技术标签:
【中文标题】多步命令和消息收集器 discord.js【英文标题】:Multistep command and message collector discord.js 【发布时间】:2021-08-22 19:05:13 【问题描述】:我正在尝试创建一个多步骤命令,在最后一次编辑嵌入之后,我想收集用户回复的内容。我尝试了 await message ,消息收集器,但没有成功。
这是命令的最后一部分。感谢您的帮助
.then(collected =>
var date = collected.first().emoji.name
switch (date)
case '1️⃣':
message.channel.send(`:white_check_mark: Tu as choisis d'ajouter un devoir pour lundi`).then(m => m.delete( timeout: 2000 ));
var date = 'lundi'
break;
case '2️⃣':
message.channel.send(`:white_check_mark: Tu as choisis d'ajouter un devoir pour mardi`).then(m => m.delete( timeout: 2000 ));
var date = 'mardi'
break;
case '3️⃣':
message.channel.send(`:white_check_mark: Tu as choisis d'ajouter un devoir pour mercredi`).then(m => m.delete( timeout: 2000 ));
var date = 'mercredi'
break;
case '4️⃣':
message.channel.send(`:white_check_mark: Tu as choisis d'ajouter un devoir pour jeudi`).then(m => m.delete( timeout: 2000 ));
var date = 'jeudi'
break;
case '5️⃣':
message.channel.send(`:white_check_mark: Tu as choisis d'ajouter un devoir pour vendredi`).then(m => m.delete( timeout: 2000 ));
var date = 'vendredi'
break;
setTimeout(() => 5000)
m.reactions.removeAll()
const newEmbed = new Discord.MessageEmbed()
.setColor('RED')
.setTitle('Entrer le descriptif du devoir')
setTimeout(() => 7000)
m.edit(newEmbed)
const filter = m => m.author.id === message.author.id;
message.channel.awaitMessages(filter,time:10000).then(collected =>
console.log(m)
)
【问题讨论】:
到底出了什么问题?你收到错误了吗? 在控制台中给我发送这个:Message channel: TextChannel type: 'text', deleted: false, id: '834932687995011112', name: 'cmd', rawPosition: 2, parentID: '777092693264039948', permissionOverwrites: Collection [Map] , topic: null, lastMessageID: '850440734573199370', rateLimitPerUser: 0,
和其他参数
这对我来说似乎是预期的行为。你期待什么?
如果用户回复“Hello 123”,我希望得到“Hello 123”作为回报。
你做了console.log(m)
,它记录了m
。有什么问题?
【参考方案1】:
TextChannel.awaitMessages()
方法返回 Collection
(Map
)。
由于您希望输出为字符串数组,您可以执行以下操作:
message.channel.awaitMessages(filter,time:10000).then(collected =>
const list = [];
collected.forEach((message) =>
list.push(message.content);
);
console.log(list); // ["hello", "world"]
);
如果您只想要一条消息,可以使用MessageCollectorOptions
的max
属性并将其设置为1:
message.channel.awaitMessages(filter,time:10000, max:1).then(collected =>
// in case the user did not answer
if (typeof collected.first() === "undefined")
return;
const string = collected.first().content;
console.log(string); // "hello"
);
【讨论】:
以上是关于多步命令和消息收集器 discord.js的主要内容,如果未能解决你的问题,请参考以下文章
VB6 ADODB 因 SQL Compact 失败:多步操作生成错误
任何操作,除了发送消息,在我的收集器 discordjs 中都不起作用