【发布时间】:2021-01-11 04:07:44
【问题描述】:
我想从 discord.js 上的消息中获取第一个表情符号
示例:<message>.content.emojis.first()
我该怎么做?
【问题讨论】:
标签: javascript node.js discord discord.js
我想从 discord.js 上的消息中获取第一个表情符号
示例:<message>.content.emojis.first()
我该怎么做?
【问题讨论】:
标签: javascript node.js discord discord.js
实际上我最近也遇到了这个问题!我能够整理出的解决方案如下:
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 的时候。
【讨论】: