如何在Discord.js中按名称查找表情符号

时间:2018-08-29 10:04:59

标签: javascript node.js bots discord discord.js

这几天来,我感到非常沮丧,因为我无法在线找到一个资源,该资源正确地记录了用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

有什么我想念的吗?我好难受...

4 个答案:

答案 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#fetchMessageManager#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');