从消息discord.js v12获取表情符号

时间:2020-09-24 20:05:19

标签: javascript node.js discord discord.js

我想从discord.js上的消息中获取第一个表情符号

示例:<message>.content.emojis.first()

我该怎么办?

1 个答案:

答案 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的时候。