我正在尝试使Discord机器人发布公告。我想创建一个命令,该命令将从消息中读取数据并将其转换为嵌入式消息。
示例命令:!announce Title, Description, Link, Image
const Discord = require('discord.js');
const bot = new Discord.Client();
//listener
bot.on('ready', () => {
bot.user.setGame('Hello!')
});
bot.on('message', (message) => {
if(message.content == 'text') {
const embed = new Discord.RichEmbed()
.setTitle("Title!")
.setDescription("Description")
.setImage("https://i.imgur.com/xxxxxxxx.png")
.setURL("https://google.com")
.addField("Text", true)
//Nope
.setThumbnail("https://i.imgur.com/Rmiwd1j.png")
.setColor(0x00AE86)
.setFooter("Footer", "https://i.imgur.com/xxxxxxxx.png")
.setTimestamp()
/*
* Blank field, useful to create some space.
*/
message.channel.send({embed});
}});
bot.login('token');
我希望根据文字更改嵌入。 我该怎么办?
答案 0 :(得分:0)
首先,您需要检测命令:可以使用String.startsWith()
来检测!announce
:
if (message.content.startsWith('!announce')) {...}
然后,您必须通过分割字符串来获取命令的其他部分:您可以使用逗号(如标题,说明,...)或任何想要的字符(I,在我的示例中将使用逗号)。
String.slice()
将帮助您摆脱!announce
部分,而String.split()
将与其他部分一起创建一个数组。
此代码将从命令!announce Title, Description, http://example.com/, http://www.hardwarewhore.com/wp-content/uploads/2018/03/dcord.png
生成this之类的嵌入
client.on("message", message => {
if (message.content.startsWith('!announce')) {
let rest_of_the_string = message.content.slice('!announce'.length); //removes the first part
let array_of_arguments = rest_of_the_string.split(','); //[title, description, link, image]
let embed = new Discord.RichEmbed()
.setTitle(array_of_arguments[0])
.setDescription(array_of_arguments[1])
.setImage(array_of_arguments[3])
.setURL(array_of_arguments[2])
.addField("Text", true)
.setThumbnail("https://i.imgur.com/Rmiwd1j.png")
.setColor(0x00AE86)
.setFooter("Footer", array_of_arguments[3])
.setTimestamp();
message.channel.send({ embed });
}
});
我建议使用文本而不是描述,并提醒您.addField()
的第二个参数是文本,而不是内联值