【发布时间】:2022-01-09 06:15:13
【问题描述】:
我正在尝试制作一个票务系统,当我点击按钮时,它会更改频道类别并删除会员查看它的权限。当我单击按钮时,它会更改类别但不会更改频道的权限。我已经查看了文档,但没有找到任何东西。
错误:
C:\Users\whash\OneDrive\Documentos\optipc_bot_beta_sem_erro\events\ticket\suporte.js:187
interaction.channel.permissionOverwrites(subTicketSuporte.userId, {deny: Permissions.FLAGS.VIEW_CHANNEL})
^
TypeError: interaction.channel.permissionOverwrites is not a function
at Client.<anonymous> (C:\Users\whash\OneDrive\Documentos\optipc_bot_beta_sem_erro\events\ticket\suporte.js:187:29)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
数据库:
我的代码:
const {
MessageActionRow,
MessageButton,
MessageEmbed,
MessageSelectMenu,
Permissions,
} = require("discord.js");
const firebase = require("firebase");
const db = firebase.database();
const client = require("../../index");
client.on("interactionCreate", async (interaction) => {
if (interaction.isCommand()) return;
interaction.deferUpdate();
// ROWS //
const rowDelChannel = new MessageActionRow().addComponents(
new MessageButton()
.setStyle("DANGER")
.setLabel("???? | Deletar canal")
.setCustomId("delChannel")
);
const rowDelMessage = new MessageActionRow().addComponents(
new MessageButton()
.setStyle("DANGER")
.setLabel("???? | Deletar mensagem")
.setCustomId("delMessage")
);
const rowArchiveThread = new MessageActionRow().addComponents(
new MessageButton()
.setStyle("DANGER")
.setLabel("???? | Arquivar thread")
.setCustomId("archiveThread")
);
const rowArchiveChannel = new MessageActionRow().addComponents(
new MessageButton()
.setStyle("DANGER")
.setLabel("???? | Arquivar canal")
.setCustomId("archiveChannel")
);
// EMBEDS //
let embedOptions = new MessageEmbed()
.setTitle("???? | Opções do ticket")
.setDescription(
'Olá, bem vindo a aba de suporte! Caso queira fechar o ticket, clique em "arquivar" ou "deletar".'
)
.setColor("GREY")
.setFooter("A optiPC agradece sua atenção.", interaction.guild.iconURL());
let subTicketSuporte = await db.ref(`Ticket/Arquivado/${interaction.user.id}`).once("value");
subTicketSuporte = subTicketSuporte.val();
// PAINEL DE SUPORTE//
if (interaction.customId === "OPENSUPORTE") {
// DATABASE //
let ticketSuporte = await db.ref(`Ticket/Suporte`).once("value");
ticketSuporte = ticketSuporte.val();
//var subTicketSuporte = await db.ref(`Ticket/Arquivado/${interaction.user.id}`).once("value");
// subTicketSuporte = subTicketSuporte.val();
if (!ticketSuporte) ticketSuporte = {};
if (!subTicketSuporte) subTicketSuporte = {};
// salvando contador
if (!ticketSuporte.contador) {
db.ref(`Ticket/Suporte`).set({
contador: parseInt(1),
});
} else {
db.ref(`Ticket/Suporte`).update({
contador: ticketSuporte.contador + parseInt(1),
});
}
// salvando o ID do user na DB
if (!subTicketSuporte.userId) {
db.ref(`Ticket/Arquivado/${interaction.user.id}`).set({
userId: interaction.user.id
});
}
// configurando o canal do ticket
let canalSuporte = await interaction.guild.channels.create(
`❔▏suporte_${ticketSuporte.contador}`,
{
parent: "915975240541171813",
type: "GUILD_TEXT",
permissionOverwrites: [
{
id: interaction.guild.id,
deny: [Permissions.FLAGS.VIEW_CHANNEL],
},
{
id: interaction.user.id,
allow: [
Permissions.FLAGS.VIEW_CHANNEL,
Permissions.FLAGS.SEND_MESSAGES,
],
},
],
}
);
await canalSuporte.send({
embeds: [embedOptions],
components: [rowDelChannel, rowArchiveChannel],
});
interaction.followUp({
content: `✅ Ticket criado com sucesso! Por favor, vá até ${canalSuporte}.`,
ephemeral: true,
});
/*
// configurando thread
const threadSuporte = await interaction.channel.threads.create({
name: `❔▏suporte_${counterSuporte.contador}`,
autoArchiveDuration: 60,
// type: 'GUILD_PRIVATE_THREAD',
reason: 'Thread para suporte.'
});
if (threadSuporte.joinable) await threadSuporte.join();
await threadSuporte.members.add('840983211458428928');
await threadSuporte.members.add('550978800952016896');
await threadSuporte.members.add('518517142656647208');
await threadSuporte.members.add('639856950368010240');
// ARQUIVAR THREAD //
if (interaction.customId === "archiveThread") {
let permicaoNecessaria = Permissions.FLAGS.BAN_MEMBERS;
if (!interaction.member.permissions.has(permicaoNecessaria))
return interaction.followUp({
content: "Você não possui permissão para arquivar o ticket!",
ephemeral: true,
});
await threadSuporte.setArchived(true); // archived
}
}
*/
}
// ROW CONFIG
if (interaction.customId === "delChannel") {
let permicaoNecessaria = Permissions.FLAGS.BAN_MEMBERS;
if (!interaction.member.permissions.has(permicaoNecessaria))
return interaction.followUp({
content: "Você não possui permissão para fechar o ticket!",
ephemeral: true,
});
interaction.channel.delete();
}
if (interaction.customId === "delMessage") {
let permicaoNecessaria = Permissions.FLAGS.BAN_MEMBERS;
if (!interaction.member.permissions.has(permicaoNecessaria))
return interaction.followUp({
content: "Você não possui permissão para fechar o ticket!",
ephemeral: true,
});
interaction.message.delete();
}
if (interaction.customId === "archiveChannel") {
console.log("a") // a
let permicaoNecessaria = Permissions.FLAGS.BAN_MEMBERS;
if (!interaction.member.permissions.has(permicaoNecessaria))
return interaction.followUp({
content: "Você não possui permissão para arquivar o ticket!",
ephemeral: true,
});
await interaction.channel.setParent("915985254127370240");
interaction.channel.permissionOverwrites(subTicketSuporte.userId, {deny: Permissions.FLAGS.VIEW_CHANNEL})
}
});
【问题讨论】:
标签: javascript node.js database firebase discord.js