簡體   English   中英

Discord.js 有反應的票務機器人

[英]Discord.js ticket bot with reaction

我正在嘗試制作票務系統,但是有一個問題。 我想在有人打開票時做到這一點,等到票關閉,然后讓他們再次做出反應。 (冷卻)

這是我的代碼:

client.on('messageReactionAdd', async (reaction, user) => {
    if (user.partial) await user.fetch();
    if (reaction.partial) await reaction.fetch();
    if (reaction.message.partial) await reaction.message.fetch();
    if (user.bot) return; {
        let ticketid = await db.get(`tickets_${reaction.message.guild.id}`);
        if (!ticketid) return;
        if (reaction.message.id == ticketid && reaction.emoji.name == ':tickets:') {
            db.add(`ticketnumber_${reaction.message.guild.id}`, 1)
            let ticketnumber = await db.get(`ticketnumber_${reaction.message.guild.id}`)
            if (ticketnumber === null) ticketnumber = "1"
            reaction.users.remove(user);
            let CH = message.guild.channels.find(r => r.id == '770687676152020993');
            if (!CH) return;
            reaction.message.guild.channels.create(`ticket-${ticketnumber}`, {
                type: 'text', parent: CH, reason: 'Reaction Tickets System',
                permissionOverwrites: [
                    {
                        id: user.id,
                        allow: ["SEND_MESSAGES", "VIEW_CHANNEL"]
                    },
                    {
                        id: reaction.message.guild.roles.everyone,
                        deny: ["VIEW_CHANNEL"]
                    }
                ],
                type: 'text'
            }).then(async channel => {
                let data = {
                    channelid: channel.id
                }
                db.push(`tickets`, data).then(console.log)
                channel.send(`<@${user.id}>`).then(log => { db.set(`mention_${channel.id}`, log.id) })
                db.set(`ticketauthor_${channel.id}`, user.id)
                let icon = reaction.message.guild.iconURL()
                let ticketmsg = await channel.send(new Discord.MessageEmbed()
                    .setTitle(`${user.username} Ticket`)
                    .setDescription("We are going to contact you as soon\n Click the reaction to close the ticket:closed_lock_with_key:")
                    .setFooter(reaction.message.guild.name, icon)
                    .setTimestamp()
                );
                ticketmsg.react(':closed_lock_with_key:')
                console.log(`${ticketmsg.id}`)
                db.set(`closeticket_${channel.id}`, ticketmsg.id)
            })
        }
    }
});

我不確定是否有辦法捕獲做出反應的用戶的 id “我將把“${reaction.author.id}”作為示例,因為我不知道如何但如果你知道如何您可以通過將創建的頻道名稱更改為:

 const ch = message.guild.channels.cache.find(ch => ch.name.toLowerCase() === `ticket-${reaction.author.id}`) if(ch) return reaction.message.guild.channels.create(`ticket-${reaction.author.id}`, { type: 'text', parent: CH, reason: 'Reaction Tickets System', permissionOverwrites: [ { id: user.id, allow: ["SEND_MESSAGES", "VIEW_CHANNEL"] }, { id: reaction.message.guild.roles.everyone, deny: ["VIEW_CHANNEL"] } ], type: 'text' })

我不確定是否有辦法捕獲做出反應的用戶的 id “我將把“${reaction.author.id}”作為示例,因為我不知道如何但如果你知道如何您可以通過將創建的頻道名稱更改為:

const example = message.guild.channels.cache.find(ch => ch.name.toLowerCase() === `ticket-${reaction.author.id}`)

if(example) return

reaction.message.guild.channels.create(`ticket-${reaction.author.id}`, {
                type: 'text', parent: CH, reason: 'Reaction Tickets System',
                permissionOverwrites: [
                    {
                        id: user.id,
                        allow: ["SEND_MESSAGES", "VIEW_CHANNEL"]
                    },
                    {
                        id: reaction.message.guild.roles.everyone,
                        deny: ["VIEW_CHANNEL"]
                    }
                ],
                type: 'text'
            })

暫無
暫無

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

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