表情符号discord.js

问题描述

在过去的几天里,我一直非常想解决此代码,以便在用户对消息做出反应时可以正常工作,而且我不知道该如何做,我也一直在尝试使其与全局表情符号一起工作,并且不只是特定行会的表情符号。有人可以告诉我我该怎么做吗?我还没有找到有关查找全局默认不和谐表情符号(例如:laughing:等)的文档。

在这里输入我的代码

const {
    MessageCollector
} = require("discord.js")
const MessageModel = require('../../models/message')
const {
    MessageEmbed
} = require('discord.js')
const {
    prefix
} = require('../../botconfig.json')
const {
    channels
} = require("./../../botconfig.json");
let msgCollectorFilter = (newMsg,originalMsg) => newMsg.author.id === originalMsg.author.id;
module.exports = {
    config: {
        name: "addreaction",category: "rolereactions",aliases: ['rr','rolereaction'],description: "creates a reaction",usage: "!rr <message id>",},run: async (bot,message,args) => {
        if(!message.member.hasPermission('MANAGE_GUILD')) return message.channel.send('You are missing the permission \`Manage server\`').then(m => m.delete({timeout:10000}))
        if (args.slice().length !== 1 && message.member.hasPermission("MANAGE_MESSAGES")) {
            const embed1 = new MessageEmbed()
                .setTitle("Enter atleast one Message Id,this message also can occur due to more than 1 message id used.")
                .setColor("RANDOM")
                .setDescription("**Usage:**\n!addreaction <Message Id>")
                .addField("**Important**","The message id can be found by right clicking a message and clicking 'Copy ID'.")
                .setFooter("This message will be deleted after 15 seconds");
            let msg = await message.channel.send(embed1) || message.member.hasPermission("MANAGE_MESSAGES");
            await msg.delete({
                timeout: 15000
            }).catch(err => console.log(err));
            const logChannel = message.channel || message.guild.channels.cache.find(c => c.name === channels.logs);
        } else {
            try {
                let FetchedMessage = await message.channel.messages.fetch(args.join(" "));
                if (FetchedMessage && message.member.hasPermission("MANAGE_MESSAGES")) {
                    const emojiEmbed = new MessageEmbed()
                        .setColor("RANDOM")
                        .setFooter("This message will be removed after 20 seconds.")
                        .setDescription("Please provide all of the emoji names with the role name.\n Usage: <Emoji name>,<Role name>.")
                    message.channel.send(emojiEmbed)
                        .then(msg => msg.delete({
                            timeout: 20000
                        }))


                    let collector = new MessageCollector(message.channel,msgCollectorFilter.bind(null,message));
                    let emojiRoleMappings = new Map()
                    collector.on('collect',msg => {
                        let {
                            cache
                        } = bot.emojis;
                        if (msg.content.toLowerCase() === `${prefix}done` && message.member.hasPermission("MANAGE_MESSAGES")) {
                            collector.stop(/*console.log('Done command issued.')*/);
                            return message.channel.send("Role Reaction `Done` command was issued.")
                                .then(msg => msg.delete({
                                    timeout: 3500
                                }));
                        }
                        let [emojiName,roleName] = msg.content.split(/,\s+/);
                        if (!emojiName && !roleName) return;
                        let emoji = cache.find(emoji => emoji.name.toLowerCase() === emojiName.toLowerCase());
                        if (!emoji && message.member.hasPermission("MANAGE_MESSAGES")) {
                            msg.channel.send("`Emoji does not exist. Try again.`")
                                .then(msg => msg.delete({
                                    timeout: 3500
                                }))
                                .catch(err => console.log(err))
                            return;
                        }

                        let role = msg.guild.roles.cache.find(role => role.name.toLowerCase() === roleName.toLowerCase());
                        if (!role) {
                            msg.channel.send("`Role does not exist. Try again.`")
                                .then(msg => msg.delete({
                                    timeout: 3500
                                }))
                                .catch(err => console.log(err))
                            return;
                        }
                        const reactEmbed = new MessageEmbed()
                            .setColor("RANDOM")
                            .setFooter("This message will be removed after 10 seconds.")
                            .setDescription("I reacted to your message,if you wish to add another reaction follow the same format\n Usage: <Emoji name>,<Role name>.");
                        FetchedMessage.react(emoji)
                            .then(message.channel.send(reactEmbed).then(msg => msg.delete({
                                timeout: 10000
                            })))
                            .catch(err => console.log(err));
                        let emojirole = {};
                        emojirole[emoji.id] = role.id;
                        bot.cachedMessageReactions.set(FetchedMessage.id,emojirole);
                        emojiRoleMappings.set(emoji.id,role.id);

                    });
                    collector.on('end',async (collected,reason) => {
                        let findMsgDocument = await MessageModel.findOne({
                            messageId: FetchedMessage.id
                        }).catch(err => console.log(err));

                        if (findMsgDocument) {
                           // console.log("The message exists.. Don't save me plz.");
                            message.channel.send("A role reaction for this message exists already...").then(msg => msg.delete({
                                timeout: 3500
                            }));
                        } else {
                            let msg = await message.channel.send("Saving...")
                            let dbMsgModel = new MessageModel({
                                messageId: FetchedMessage.id,emojiRoleMappings: emojiRoleMappings

                            });
                            dbMsgModel.save().catch(err => console.log(err))
                                .then(msg.edit("Saved!").then(msg => msg.delete({
                                    timeout: 3500
                                })));
                        }
                    });

                }
            } catch (err) {
                console.log(err)
    
                let msg = await message.channel.send("This message doesnt exist.");
                await msg.delete({
                    timeout: 3500
                }).catch(err => console.log(err));
            }

        }


    }
}

解决方法

要获取默认的表情符号,例如:laughing :,只需发送不和谐的表情符号,并在其前面加上反斜杠即可:\:laughing:

复制结果并将其粘贴到您的代码中。 这仅适用于PC

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...