我正在嘗試制作一個票務系統,當我點擊按鈕時,它會更改頻道類別并洗掉成員查看它的權限。當我單擊按鈕時,它會更改類別但不會更改頻道的權限。我已經查看了檔案,但沒有找到任何內容。
錯誤:
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})
}
});
uj5u.com熱心網友回復:
其實GuildChannel#permissionOverwrites不是函式
這是一個回傳的屬性 PermissionOverwriteManager
我建議你使用
interaction.channel.permissionOverwrites.edit(subTicketSuporte.userId, { "VIEW_CHANNEL": false })
應該就是這樣
檔案來源
uj5u.com熱心網友回復:
GuildChannel#permissionOverwrites是一個PermissionOverwriteManager。改用.set它:
interaction.channel.permissionOverwrites.set([{
deny: [Permissions.FLAGS.VIEW_CHANNEL],
id: subTicketSuporte.userId,
type: "member"
}])
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/371996.html
標籤:javascript 节点.js 数据库 火力基地 不和谐.js
