我想从discord.js上的消息中获取第一个表情符号
示例:<message>.content.emojis.first()
我该怎么办?
答案 0 :(得分:0)
我实际上最近也有这个问题!我能够汇总的解决方案是:
TL; DR
您想使用.includes
来简单查找消息中是否存在表情符号
这是一个小例子:
const message = await message.channel.messages.fetch()
let findEmoji = message.includes("<:")
let firstEmoji = findEmoji.first()
TL的末尾; DR。
这是一个非常长且拉长的版本,可以捕获表情符号并使用RegEx吐出嵌入式图像:
const hasEmoteRegex = /<a?:.+:\d+>/gm
const emoteRegex = /<:.+:(\d+)>/gm
const animatedEmoteRegex = /<a:.+:(\d+)>/gm
const messages = await message.channel.messages.fetch()
const message = messages.find(m => m.content.match(hasEmoteRegex))
if (emoji = emoteRegex.exec(message)) {
const url = "https://cdn.discordapp.com/emojis/" + emoji[1] + ".png?v=1"
msg.channel.send(url)
}
else if (emoji = animatedEmoteRegex.exec(message)) {
const url = "https://cdn.discordapp.com/emojis/" + emoji[1] + ".gif?v=1"
msg.channel.send(url)
}
else {
message.channel.send("Couldn't find an emoji to paste!")
}
这使用RegEx过滤掉表情符号的不同部分作为字符串。
标准表情符号看起来像:<:emojiname:emojiID>
,例如。 <:BBwave:562730391362994178>
动画表情符号看起来像:<a:emojiname:emojiID>
RegEx将这些部分中的每一个都分成几部分
<
:BBwave:
562730391362994178
>
或
a
<
:BBwave:
562730391362994178
>
我提供的代码基本上只使用 ID,并删除了所有其他信息。然后,它将此ID添加到Discord的标准表情符号链接中:https://cdn.discordapp.com/emojis/562730391362994178.png?v=1,或在动画表情符号的末尾添加到.gif
的URL中。
我希望这不会太令人压倒!我知道那肯定是我第一次开始使用discord.js的时候。