如何通过字段值从通道获取RichEmbed?
How to get a RichEmbed from the channel by field value?
所以,我正在为我的 Discord 频道创建机器人。我根据要求创建了一个特殊的系统。例如,用户发送请求加入他想要的聊天。每个请求都与一个唯一的 ID 配对。请求已形成并发送到服务通道,主持人可以在其中看到这些请求。然后,一旦请求得到解决,版主输入类似 .resolveRequest <ID>
的内容,此请求将被复制并发布到 'resolved requests' 频道。
我写了一些代码。
生成请求:
if (command === "join-chat") {
const data = fs.readFileSync('./requestID.txt');
let requestID = parseInt(data, 10);
const emb = new Discord.RichEmbed()
.setTitle('New request')
.setDescription('Request to add to chat')
.addField('Who?', `**User ${msg.author.tag}**`)
.addField('Which chat?', `**Chat: ${args[0]}**`)
.setFooter('Request\'s ID: ' + requestID)
.setColor('#fffb3a');
let chan = client.channels.get('567959560900313108');
chan.send(emb);
requestID++;
fs.writeFileSync('./requestID.txt', requestID.toString(10));
}
现在.resolveRequest <ID>
:
if (command === '.resolveRequest') {
msg.channel.fetchMessages({limit : 100}) //getting last 100 messages
.then((messages) => messages.forEach(element => { //for each message get an embed
element.embeds.forEach(element => {
msg.channel.send(element.fields.find('value', args[0].toString(10))); //send a message containing the ID mentioned in 'args[0]' that was taken form the message
})
}));
}
.join-chat <chat_name>
完美运行,但 .resolveRequest <ID>
根本不起作用,甚至没有错误。
有什么办法可以解决吗?
不推荐使用 .find('value', 'key')
,请改用 .find(thing => thing.value == 'key')
。
您还应该使用数据库来存储东西,但您的代码实际上并没有损坏,只是您检查了:command === '.resolveRequest'
,这意味着您需要 运行 ..resolveRequest
,因为在 command
变量中,前缀被删除,所以将其更改为:command === 'resolveRequest'
所以,我正在为我的 Discord 频道创建机器人。我根据要求创建了一个特殊的系统。例如,用户发送请求加入他想要的聊天。每个请求都与一个唯一的 ID 配对。请求已形成并发送到服务通道,主持人可以在其中看到这些请求。然后,一旦请求得到解决,版主输入类似 .resolveRequest <ID>
的内容,此请求将被复制并发布到 'resolved requests' 频道。
我写了一些代码。
生成请求:
if (command === "join-chat") {
const data = fs.readFileSync('./requestID.txt');
let requestID = parseInt(data, 10);
const emb = new Discord.RichEmbed()
.setTitle('New request')
.setDescription('Request to add to chat')
.addField('Who?', `**User ${msg.author.tag}**`)
.addField('Which chat?', `**Chat: ${args[0]}**`)
.setFooter('Request\'s ID: ' + requestID)
.setColor('#fffb3a');
let chan = client.channels.get('567959560900313108');
chan.send(emb);
requestID++;
fs.writeFileSync('./requestID.txt', requestID.toString(10));
}
现在.resolveRequest <ID>
:
if (command === '.resolveRequest') {
msg.channel.fetchMessages({limit : 100}) //getting last 100 messages
.then((messages) => messages.forEach(element => { //for each message get an embed
element.embeds.forEach(element => {
msg.channel.send(element.fields.find('value', args[0].toString(10))); //send a message containing the ID mentioned in 'args[0]' that was taken form the message
})
}));
}
.join-chat <chat_name>
完美运行,但 .resolveRequest <ID>
根本不起作用,甚至没有错误。
有什么办法可以解决吗?
不推荐使用 .find('value', 'key')
,请改用 .find(thing => thing.value == 'key')
。
您还应该使用数据库来存储东西,但您的代码实际上并没有损坏,只是您检查了:command === '.resolveRequest'
,这意味着您需要 运行 ..resolveRequest
,因为在 command
变量中,前缀被删除,所以将其更改为:command === 'resolveRequest'