簡體   English   中英

表情符號 discord.js

[英]Emojis discord.js

在過去的幾天里,當用戶對消息做出反應並且我不知道如何處理時,我一直非常關注修復此代碼以使其工作,我也一直在嘗試使其與全球表情符號一起工作,而不僅僅是表情符號在特定的公會上。 誰能告訴我我必須做什么? 我沒有看到任何有關查找全局默認 discord 表情符號的文檔,例如:笑:等。

這是我的代碼

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 :,只需發送 discord 中的表情符號,前面帶有反斜杠: \:laughing:

復制結果並將其粘貼到您的代碼中。 這僅適用於PC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM