javascript - 从消息 discord.js v12 中获取表情符号
问题描述
我想从 discord.js 上的消息中获取第一个表情符号
例子:<message>.content.emojis.first()
我该怎么做?
解决方案
实际上我最近也遇到了这个问题!我能够放在一起的解决方案是:
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 的时候。
推荐阅读
- wpf - 如何让多个 ItemsControl 了解彼此的 z-index?WPF
- python-3.x - Keras 图层特征标签
- vue.js - vuetify 更改选项卡事件
- javascript - 使用css更改交通灯通过添加javascript来控制计时器
- angular - 当以角度选择另一个选择输入时如何重置一个选择输入的值
- reactjs - React 如何更新组件
- android - 在 webView Android 中打开键盘时如何隐藏导航栏?
- reactjs - 在 AWS CodeDeploy 管道上构建输出
- java - 如何使用 java 流按值对 Map 进行排序?
- java - BCrypt:使用 Spring Security 的空编码密码