剪切 Discord 消息的特定部分?不和谐.js
Posted
技术标签:
【中文标题】剪切 Discord 消息的特定部分?不和谐.js【英文标题】:Cut a specific part of a Discord message possibe? Discord.js 【发布时间】:2020-09-07 09:18:25 【问题描述】:我是德国 Discord 服务器和 Minecraft 服务器的所有者,正在编写自己的 Discord 机器人来解决输入相同事物或任何内容(新闻、赠品等)数百次的问题,并且需要以下方面的帮助问题:
我想发出一个命令(通常是这个机器人的 p/[command])在特定频道中发送 Givaway 新闻。我以为“没问题”,但我被 Discord.js 上的切片问题困住了。我希望命令像我只需要连续编写属性一样工作。
p/giveaway [Date of Ending] [Time of Ending] [number of Winners] [Price to Win] [optional conditions to participate] [optional Text as desciption]
例子:
Example Input:
p/giveaway 01.01.2020 00:00 20 something nothing some text
Example output should be:
Runtime till 01.01.2020 at 00:00 o clock
Noumber of winners: 20
What you can win: something
Conditions: nothing
some text
布局没问题,但我不知道如何拆分消息,以免消息混乱。我希望机器人遵循严格的模板。
如果有什么不清楚的地方,请随时提问。
这是我目前得到的代码。它可以工作,除了输出被磨损,因为我不知道如何分割消息的后面部分,所以它只是缓存消息的特定部分。
到目前为止我得到的代码:
bot.on("message", function(message)
// command
if(message.content.startsWith("p/giveaway"))
// vars, etc
let destination = bot.channels.cache.get("[Discord-channel ID here]")
var timetorun = message.content.split(" ").slice(1).join(" ");
var TIMEtorun = message.content.split(" ").slice(2).join(" ");
var winner = message.content.split(" ").slice(3).join(" ");
var price = message.content.split(" ").slice(4).join(" ");
var conditions = message.content.split(" ").slice(5).join(" ");
var text = message.content.split(" ").slice(6).join(" ");
// Embed
const GiveawayEmbed = new Discod.MessageEmbed()
.setColor("#0099ff")
.setTitle("")
.setAuthor("Server Giveaway", "https://i.imgur.com/MMiVcKH.png")
.setThumbnail("https://i.imgur.com/MMiVcKH.png")
.addFields( name:"->", value: ("Runtime till " + (timetorun) + " at " + (TIMEtorun) + " o clock" + "\nNoumber of winners: " + (winner) + "\nWhat you can win: " + (price) + "\nConditions: " + (conditions) + "\n" + (text))
)
.setFooter("The general rules of ... apply - ... .net")
// Code
if(!timetorun || !TIMEtorun || !winner || !price)
message.channel.send("\nuse the folling format to use this command: [Date of Ending] [Time of Ending] [number of Winners] [Price to Win] [optional conditions to participate] [optional Text as desciption]");
return;
;
// permissions
if(!message.member.hasPermission("ADMINISTRATOR"))
message.channel.send("``` \nYou are not allowed to do that! \n ```");
return;
;
// finaly send
destination.send(GiveawayEmbed);
;
;
This is how the Bot actually replyes
感谢您的帮助!
【问题讨论】:
【参考方案1】:首先,我们要将消息拆分为单词数组并将其存储为变量:
const args = message.content.split(' ')
使用您的示例输入,其值将如下所示:
[
"p/giveaway",
"01.01.2020",
"00:00',
"20',
"something",
"nothing",
"some",
"text"
]
现在,我们可以花一些时间来了解.slice()
函数的作用。事实上,在 javascript 中,数组从 0 开始索引,我们运行 args.slice(5)
。它应该返回以下内容:
[
"nothing",
"some",
"text"
]
请注意,我们现在有了索引为5
的字符串,以及它之后的所有其他字符串。这就是为什么您会在帖子中获得链接的输出。相反,您应该做的是只获取您感兴趣的索引,如下所示:
args[1] // 01.01.2020
args[4] // something
如果您想更好地了解.slice()
的工作原理,建议您阅读this Mozilla Developer Network page (here it is in deutsch too)。
【讨论】:
以上是关于剪切 Discord 消息的特定部分?不和谐.js的主要内容,如果未能解决你的问题,请参考以下文章
Discord.js ReferenceError:未定义消息