discord - 如何制作从消息中读取数据的嵌入?
问题描述
我正在尝试制作一个 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');
我希望根据文本更改嵌入。我怎样才能做到这一点?
解决方案
首先,您需要检测命令:您可以使用String.startsWith()
检测!announce
:
if (message.content.startsWith('!announce')) {...}
然后你必须通过拆分字符串来获取命令的其他部分:你可以用逗号分隔它们,就像你做的那样(标题,描述,...),或者你想要的任何字符(我将使用在我的例子中是逗号)。
String.slice()
将帮助您摆脱!announce
零件,同时String.split()
将与其他零件一起创建一个数组。
此代码将从命令生成这样的嵌入!announce Title, Description, http://example.com/, http://www.hardwarewhore.com/wp-content/uploads/2018/03/dcord.png
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()
是文本,而不是内联值
推荐阅读
- c - RK 积分器中的长双精度误差饱和
- javascript - 如何从多个嵌套值创建项目数组?
- python - 子类方法会自动继承父类抽象方法的装饰器吗?
- java - 将 SqsListener 配置为长池化
- python - 用python将大文件上传到谷歌云存储的最快方法?
- javascript - 有什么方法可以调整平面列表滚动阈值/灵敏度?
- python - 重新排序ndarray的第n维
- c# - 如何将二维数组与数组顶部和侧面的字符串数组对齐
- c - const char *m = "mnopqr" 和 const char m = "mnopqr" 有什么区别,为什么后者会导致段错误
- java - 如何使用 Arrays.asList() 启动 LinkedList