这几天来,我感到非常沮丧,因为我无法在线找到一个资源,该资源正确地记录了用JavaScript编写不和谐的bot时如何查找表情符号。我一直在参考本指南,其有关表情符号的文档似乎有误,或者已过时:
https://anidiots.guide/coding-guides/using-emojis
我需要的很简单;即可使用.find()
函数引用表情符号并将其存储在变量中。这是我当前的代码:
const Discord = require("discord.js");
const config = require("./config.json");
const fs = require("fs");
const client = new Discord.Client();
const guild = new Discord.Guild();
const bean = client.emojis.find("name", "bean");
client.on("message", (message) => {
if (bean) {
if (!message.content.startsWith("@")){
if (message.channel.name == "bean" || message.channel.id == "478206289961418756") {
if (message.content.startsWith("<:bean:" + bean.id + ">")) {
message.react(bean.id);
}
}
}
}
else {
console.error("Error: Unable to find bean emoji");
}
});
p.s。整个豆子只是一个测试
但是每次我运行此代码时,它只会返回此错误并死:
(node:3084) DeprecationWarning: Collection#find: pass a function instead
有什么我想念的吗?我好难受...
答案 0 :(得分:2)
我从没使用过discord.js
,所以我可能完全错了
从警告中我说你需要做类似的事情
client.emojis.find(emoji => emoji.name === "bean")
加上看了Discord.js Doc
之后,这似乎是可行的方法。但是文档永远不会说client.emojis.find("name", "bean")
错误
答案 1 :(得分:2)
我已经更改了您的代码。
希望它会对您有所帮助!
const Discord = require("discord.js");
const client = new Discord.Client();
client.on('ready', () => {
console.log('ready');
});
client.on('message', message => {
var bean = message.guild.emojis.find(emoji => emoji.name == 'bean');
// By guild id
if(message.guild.id == 'your guild id') {
if(bean) {
if(message.content.startsWith("<:bean:" + bean.id + ">")) {
message.react(bean.id);
}
}
}
});
答案 2 :(得分:1)
请签出switching to v12 discord.js guide
v12引入了管理器的概念,您将不再能够在诸如
Collection#get
之类的数据结构上直接使用诸如Client#users
之类的收集方法。现在,在尝试使用收集方法之前,您将必须直接在管理器上请求缓存。直接在管理器上调用的任何方法都将调用API,例如GuildMemberManager#fetch
和MessageManager#delete
。
在这种特定情况下,您需要将缓存对象添加到表达式中:
var bean = message.guild.emojis.cache?.find(emoji => emoji.name == 'bean');
答案 3 :(得分:0)
如果像我这样的人在寻找答案时发现了这个问题,则在v12中,您将不得不添加缓存,使其看起来像这样:
var bean = message.guild.emojis.cache.find(emoji => emoji.name == 'bean');
而不是:
var bean = message.guild.emojis.find(emoji => emoji.name == 'bean');