'Permissions checking discord.js

I tried to make a bot that can kick users and I have a probem with checking if user has a permision to do so. I have aready searched for it trough the whole internet and everywere it was sad to use .has but it doesn't seems to work, console always returns error: Cannot read properties of undefined (reading 'has').

Here's my code:

const { SlashCommandBuilder } = require("@discordjs/builders");
const { Permissions } = require('discord.js');

module.exports = {
    data: new SlashCommandBuilder()
        .setName("kick")
        .setDescription("Kicks someone")
        .addUserOption(option => 
            option
                .setName("user")
                .setDescription("Select the user")
                .setRequired(true)),
    async execute(interaction){
        const user = interaction.options.getUser("user");
        const userId = interaction.guild.members.cache.get(user.id);

        if(!interaction.user.permissions.has(Permissions.FLAGS.KICK_MEMBERS)) return interaction.reply("You dont have perrmisions to kick KEKW!");
        if(!interaction.guild.permissions.me.has(Permissions.FLAGS.KICK_MEMBERS)) return interaction.reply("I dont have perrmisions to kick KEKW!");

        if(userId == interaction.user.id) return interaction.reply(
        {
            content: "You cant kick yourself bro!",
            ephemeral: true
        });
        
        interaction.reply({
            content: `You have succesfuly kicked user: ${user}!`,
            ephemeral: true
        });
        userId.kick();
    }
}

Here's the error: https://ibb.co/86xPdJv



Solution 1:[1]

interaction.user is a User object, so methods only available to GuildMember, like permissions.has cannot be applied to the interaction.user. Change it to interaction.member will solve the problem. It's also a good idea to read more about User and GuildMember objects and their differences in the discord.js documentation and guide. I've linked these below:

discord.js documentation pages on topic:

https://discord.js.org/#/docs/discord.js/stable/class/User -User

https://discord.js.org/#/docs/discord.js/stable/class/GuildMember -GuildMember

discord.js guide on topic:

https://discordjs.guide/popular-topics/faq.html#what-is-the-difference-between-a-user-and-a-guildmember

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 panzer-chan