My goal is to make a menu selection system that opens tickets. However, when it opens a ticket the roles that should have access to the tickets (admin and moderator) are not accessible. Could you help me?
Here is the code:
Client.on("interactionCreate", interaction => {
if(interaction.isSelectMenu()){
if(interaction.customId === "select") {
console.log(interaction.values);
if(interaction.values == "qst"){
interaction.reply({content: "Vous avez choisi l'option ❓ | Question", ephemeral: true});
nbTicket++;
//Nom du ticket
interaction.guild.channels.create("ticket-" + nbTicket, {
parent: "978962595971211324",
//Permissions
permissionOverwrites: [
{
id: interaction.guild.id,
deny: [Discord.Permissions.FLAGS.VIEW_CHANNEL]
},
{
id: interaction.user.id,
allow: [Discord.Permissions.FLAGS.VIEW_CHANNEL]
},
{
id : interaction.guild.roles.cache("978963146364563456"),
allow: [Discord.Permissions.FLAGS.VIEW_CHANNEL]
}
]
}).then(channel => {
var button = new Discord.MessageActionRow()
.addComponents(new Discord.MessageButton()
.setCustomId("close-ticket")
.setLabel("Fermet le ticket")
.setStyle("DANGER")
);
//Message du bot à l'open du ticket
channel.send({content: "<@" + interaction.user.id + "> a ouvert un ticket de la catégorie ❓ | Question", components: [button]});
//Remise à 0
interaction.update("Sélectionnez une option pour ouvrir un ticket");
});
}
This is the error I get:
Uncaught TypeError TypeError: interaction.guild.roles.cache is not a function
Thank you and have a nice day !
RoleManager.cache isn't a function, it's a getter, that returns Collection<Snowflake, Role>.
Probably what you are looking for is
interaction.guild.roles.cache.get("978963146364563456")
instead of
interaction.guild.roles.cache("978963146364563456")
See Collection.get