【问题标题】:Find out if an emoji is usable in Discord.JS?找出表情符号是否可以在 Discord.JS 中使用?
【发布时间】:2020-05-05 14:46:42
【问题描述】:

正如您在this image 中看到的那样,我服务器中那些 Discord 表情符号的下半部分是灰色的。这是因为我曾经有两个 Server Boosts,but for now I don't。我正在为我的 Discord.JS Bot 制作一个表情符号选择器,它需要能够检测每个 可用 表情符号。不幸的是,我不知道如何让我的机器人检测表情符号是否可用。我在这里也找不到任何有用的东西:https://discord.js.org/#/docs/main/stable/class/Emoji。我当前的代码:

let emojiurls = [];
await client.emojis.array().forEach((item, index)=>{
    emojiurls.push({"name":item.name,"url":item.url});
});
return res.json(emojiurls);

我可能需要使用 client.emojis.available.array() 之类的东西,但这似乎不起作用。

【问题讨论】:

  • 我不确定提升限制是否也适用于机器人(例如,机器人可能能够使用灰色的表情符号)
  • 我实际上需要一个 webhook 才能发送表情符号,并且我已经测试了灰色的表情符号不能发送 webhook。
  • @ChrisSatchell 原来普通机器人也无法发送表情符号:i.imgur.com/ltgXszb.png
  • Discord 表情符号作为 unicode 字符发送,而不是 :emoji: 字符串。更多详情请查看anidiots.guide/coding-guides/…
  • 我没有尝试发送 unicode 表情符号

标签: javascript discord discord.js


【解决方案1】:

在下一个版本的 Discord.js (v11.5) 中将有一个.available

您可以通过运行npm i discordjs/discord.js#11.5-dev 进行升级。 除非您使用已弃用的功能,否则此版本升级不应进行重大更改。

有了这个新属性,你应该可以做到:

let emojiurls = [];
client.emojis.filter(emoji => emoji.available).forEach(emoji => { emojiurls.push({ "name": emoji.name, "url": emoji.url }); });
return res.json(emojiurls);

这可以缩短为:

const emojiurls = client.emojis
    .filter(emoji => emoji.available)
    .map(emoji => { 
        return { "name": emoji.name, "url": emoji.url };
     });
return res.json(emojiurls); 

另外,由于 discord.js 没有改变 Dev Branch 中的 Version String,所以还是 11.5.1。

【讨论】:

  • 谢谢!请问如何将dev版本添加到package.json?
  • 没关系,根据我在谷歌上找到的这个发现它是"discord.js": "github:discordjs/discord.js#11.5-dev"github.com/MoonlightCapital/InviteDeleter/blob/master/…
  • 好吧,很抱歉评论垃圾邮件,但虽然我将它添加到 package.json 并且还卸载并使用 npm 重新安装它仍然安装错误版本:+ discord.js@11.5.1
  • npm i discordjs/discord.js#11.5-dev 也应该在 package.json 中更新它。
  • 我用附加信息更新了答案,我认为你有问题,顺便说一句 client.emojis.available.array() 是错误的。
猜你喜欢
  • 2015-08-25
  • 1970-01-01
  • 2020-01-11
  • 1970-01-01
  • 2019-04-18
  • 1970-01-01
  • 2019-11-12
  • 2020-07-09
  • 1970-01-01
相关资源
最近更新 更多