Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/493.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何基于通过提示符-Discord.js从用户输入中收集的输入进行自定义嵌入_Javascript_Node.js_Discord.js - Fatal编程技术网

Javascript 如何基于通过提示符-Discord.js从用户输入中收集的输入进行自定义嵌入

Javascript 如何基于通过提示符-Discord.js从用户输入中收集的输入进行自定义嵌入,javascript,node.js,discord.js,Javascript,Node.js,Discord.js,我正在尝试生成一个建议命令,如果用户在服务器中键入=suggest,它将在其DM中创建一个提示,询问不同的规范 但是,我不确定如何获得用户输入并在嵌入式系统中使用该输入。我该怎么做 例如: 机器人会在DM的“您希望标题是什么?”中询问,然后用户会用他们想要的标题进行响应,并将该输入设置为标题。您可以使用消息收集器。我在这里用过: const前缀='!'; client.on('消息',(消息)=>{ if(message.author.bot | | |!message.content.star

我正在尝试生成一个建议命令,如果用户在服务器中键入
=suggest
,它将在其DM中创建一个提示,询问不同的规范

但是,我不确定如何获得用户输入并在嵌入式系统中使用该输入。我该怎么做

例如:
机器人会在DM的“您希望标题是什么?”中询问,然后用户会用他们想要的标题进行响应,并将该输入设置为标题。

您可以使用消息收集器。我在这里用过:

const前缀='!';
client.on('消息',(消息)=>{
if(message.author.bot | | |!message.content.startsWith(prefix))返回;
const args=message.content.slice(prefix.length.split(+/);
const命令=args.shift().toLowerCase();
如果(命令=='suggest'){
//发送问题
message.channel.send('您希望标题是什么?');
//使用筛选器仅收集来自消息作者的响应
const filter=(response)=>response.author.id==message.author.id;
//最多只接受一条消息,一分钟后出错
常量选项={max:1,时间:60000,错误:['time']};
消息通道
.等待消息(筛选器、选项)
。然后((收集)=>{
//收集的第一封邮件的内容将是标题
const title=collected.first().content;
const embed=new MessageEmbed()
.setTitle(标题)
.setDescription(“此嵌入具有自定义标题”);
message.channel.send(嵌入);
})
.catch((已收集)=>
log(`一分钟后,仅收集${collected.size}消息。`),
);
}
});

我刚注意到你想用DM发送。在这种情况下,您可以删除第一条消息,等待它被解析,这样您就可以使用在通道中添加消息收集器。我添加了一些注释来解释:

const前缀='!';
client.on('message',异步(message)=>{
if(message.author.bot | | |!message.content.startsWith(prefix))返回;
const args=message.content.slice(prefix.length.split(+/);
const命令=args.shift().toLowerCase();
常数分钟=5;
如果(命令=='suggest'){
常量问题=[
{回答:null,字段:'title'},
{回答:null,字段:'description'},
{回答:null,字段:'作者姓名'},
{回答:空,字段:'color'},
];
设电流=0;
//等待消息发送并抓取返回的消息
//因此,我们可以添加消息收集器
const sent=wait message.author.send(
`**${questions.length}的问题1:*\n您希望${questions[current].field}是什么?`,
);
const filter=(response)=>response.author.id==message.author.id;
//在发送原始问题的DM通道中发送
const collector=sent.channel.createMessageCollector(过滤器{
麦克斯:问题,长度,
时间:分钟*60*1000,
});
//每次收集邮件时激发
collector.on('collect',(message)=>{
//添加答案并增加当前索引
问题[current++]。答案=message.content;
const hasMoreQuestions=当前{
如果(原因==‘时间’){
返回message.author.send(
`我不是说你很慢,但你只回答了${questions.length}中的${collected.size}问题,用${MINUTES}分钟回答了${questions.length}。我放弃了,
);
}
const embed=new MessageEmbed()
.setTitle(问题[0]。答案)
.setDescription(问题[1]。答案)
.setAuthor(问题[2]。答案)
.setColor(问题[3]。答案);
message.author.send('这是您的嵌入:');
message.author.send(嵌入);
});
}
});


PS:您可以在上了解有关邮件收集器的更多信息。

嘿!惊人的代码,它的工作非常棒。我如何让它发送最终嵌入到DM中,然后用“是/否”提示提示用户?