从 discord.js 中的消息中获取 Emoji url

Posted

技术标签:

【中文标题】从 discord.js 中的消息中获取 Emoji url【英文标题】:Get the Emoji url from a message in discord.js 【发布时间】:2018-09-16 08:48:27 【问题描述】:

我试图让我的不和谐机器人显示表情符号的图像文件。 因此,您发布一个表情符号,机器人会回复并附上该表情符号的图片。

它适用于机器人在线的服务器的表情符号。 但是如何从其他服务器获取 emojis 的 url?

我使用 bot.emojis.get 搜索表情符号 但是我如何在客户端“bot”的“外部”搜索?或者以其他方式获取网址?

我加入服务器的表情符号代码:

const emoji = bot.emojis.get(emojiID);

await message.channel.send(files: [

  attachment: emoji.url,
  name: emoji.name + '.png'

]);

另一个问题是emoji.animated 一直在返回undefined。为什么? https://discord.js.org/#/docs/main/stable/class/Emoji?scrollTo=animated

【问题讨论】:

这个问题有答案。不要编辑它以包含新问题。 @AndréPaulo 是问题的一部分,但没关系。冷静... 【参考方案1】:

机器人只能访问它们所在服务器上的表情符号。 因此,如果您尝试从机器人不在的服务器中获取表情符号,您将得到未定义。

emoji.animated 为我返回 truefalse(取决于它是否动画)。在检查.animated之前确保emoji有效。


刚刚测试,您可以从其他服务器获取表情的 URL。 从message.reactions 你可以得到所有反应的表情符号。并获取他们的网址

【讨论】:

也许可以,但我需要从消息中获取 url【参考方案2】:

由于所有表情符号 URL 都采用以下形式:

https://cdn.discordapp.com/emojis/$emoji.id./* extension of the emoji e.g: .png */

你可以简单地使用它,因为你已经有了表情符号的 ID。请记住,这仅适用于机器人可以访问的表情符号。如果您想获取客户端无权访问的表情符号 URL,则需要使用一些正则表达式从消息中获取表情符号 ID。

【讨论】:

这工作正常!我只是从消息内容中获取 id。但我无法检查文件类型,所以现在所有的表情符号都是 png。 Discord 在上传时会将表情符号转换为 .png,当然 .gif 除外,因此它应该只是两者之一。可以检查emoji.animated 以确定使用哪一个。

以上是关于从 discord.js 中的消息中获取 Emoji url的主要内容,如果未能解决你的问题,请参考以下文章

从反应 discord.js 中获取消息 ID

discord.js 如何从 fetchMessage 事件中获取“反应用户”列表?

如何查找机器人在特定频道中发送的消息? [discord.js]

在 discord.js 中的时间限制之前获取收集的消息

如何从 discord.js 中的 JSON 对象中检索消息作为对象?

有没有办法在将消息从节点服务器发布到频道时获取 Discord 消息 ID?