所以我试图用discord.js构建自己的discord机器人。我要实现的一件事是非常重要的。 我想通过机器人命令重新分配变量。我当前的代码如下:
client.on("message", (msg) => {
if (msg.content.startsWith(config.prefix + "boosting")) {
const embed = new Discord.MessageEmbed()
.setColor("0xd08d11")
.setTitle("**Random Title**")
.setDescription(Some description)
.addFields(
{ name: '\u200B', value: '\u200B' }, //spacer
{ name: "Person 0", value: 'Personvalue', inline: true },
{ name: '\u200B', value: '\u200B' }, //spacer
{ name: 'Price', value: 'Pricevalue', inline: true },
{ name: '\u200B', value: '\u200B' }, //spacer
{ name: 'Person 1', value: '40k', inline: true },
{ name: 'Person 2', value: '40k', inline: true },
{ name: 'Person 3', value: '40k', inline: true },
{ name: 'Person 4', value: '40k', inline: true },
)
.setThumbnail(logo)
.setTimestamp()
.setFooter('created by me or something like that');
client.channels.cache.get(`here_is_my_channel_id`).send(embed);
}
});
client.login(config.token)
好的,现在我可以输入.boosting从我的机器人获取嵌入消息,但事实是,我想要输入.boosting Variable1 Variable2等等,以便为嵌入消息的属性提供新值。对于属性,我的意思是类似描述或字段名称或值。我尝试过这样的事情:
let Variable = "Test";
client.on("message", (msg) => {
if (msg.content.startsWith(config.prefix + "boosting" + " " + Variable)) {
const embed = new Discord.MessageEmbed()
.setColor("0xd08d11")
.setTitle("**Random Title**")
.setDescription(Variable)
.addFields(
{ name: '\u200B', value: '\u200B' }, //spacer
{ name: "Person 0", value: 'Personvalue', inline: true },
{ name: '\u200B', value: '\u200B' }, //spacer
{ name: 'Price', value: 'Pricevalue', inline: true },
{ name: '\u200B', value: '\u200B' }, //spacer
{ name: 'Person 1', value: '40k', inline: true },
{ name: 'Person 2', value: '40k', inline: true },
{ name: 'Person 3', value: '40k', inline: true },
{ name: 'Person 4', value: '40k', inline: true },
)
.setThumbnail(logo)
.setTimestamp()
.setFooter('created by me or something like that');
client.channels.cache.get(`here_is_my_channel_id`).send(embed);
}
});
client.login(config.token)
现在,我可以编写.boosting测试,此嵌入消息的描述将以此为值。 我知道我需要定义变量,但是有没有可能用bot命令重新分配它?因此,它可以从值“ Test”更改为“ something”。感谢所有帮助!
答案 0 :(得分:0)
您可以将邮件拆分为单词数组:
const args = message.content.slice(config.prefix.length).split(/ +/).slice(1)
// example: `.boosting hello people of the world`
// returns: ['hello', 'people', 'of', 'the', 'world']
因此,如果您想获取第一个参数(单词),则可以使用args[0]
。第二个是args[1]
,依此类推。
您更新了代码:
client.on("message", (msg) => {
if (msg.content.startsWith(config.prefix + "boosting" + " " + Variable)) {
const args = message.content.slice(config.prefix.length).split(/ +/).slice(1)
const embed = new Discord.MessageEmbed()
.setColor("0xd08d11")
.setTitle("**Random Title**")
.setDescription(args[0])
.addFields(
{ name: '\u200B', value: '\u200B' }, //spacer
{ name: "Person 0", value: 'Personvalue', inline: true },
{ name: '\u200B', value: '\u200B' }, //spacer
{ name: 'Price', value: 'Pricevalue', inline: true },
{ name: '\u200B', value: '\u200B' }, //spacer
{ name: 'Person 1', value: '40k', inline: true },
{ name: 'Person 2', value: '40k', inline: true },
{ name: 'Person 3', value: '40k', inline: true },
{ name: 'Person 4', value: '40k', inline: true },
)
.setThumbnail(logo)
.setTimestamp()
.setFooter('created by me or something like that');
client.channels.cache.get(`here_is_my_channel_id`).send(embed);
}
});
client.login(config.token)