The error:
TypeError: Cannot read properties of undefined (reading 'add') line 40
I looked everywhere like even in the discord API but nothing. If there is anything I can do better in my code tell me.
If it's necessary I use VSC and node.js.
The member
is a variable and used in if() in the code but it doesn't work.
const { Client , GatewayIntentBits} = require('discord.js')
require('dotenv/config')
var not_stable = "⭕"
var working = "🔛"
var done = "✅"
var failed = "❌"
const client = new Client({
intents:[
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
GatewayIntentBits.GuildMembers,
],
})
client.on("ready", () => {
console.log("Bot is ready :D");
})
client.on("messageCreate", message => {
if(message.author == client.user) {
return;
}
var member = message.mentions.users.first();
var channel = message.channel;
var bug_channel = message.guild.channels.cache.find(r => r.id === "1030971519754588200");
var sup = message.guild.roles.cache.find(r => r.name == "Suporter")
var ping_sup = "<@&"+sup.id+"> "
if (message.content == "op <@"+member.id+">") {
if (member != undefined) {
let role = message.guild.roles.cache.find(r => r.id === "1030196677472178298");
try {
console.log(member)
member.roles.add(role); //my problem is at the add its not defined
}
catch(error) {
bug_channel.send(ping_sup+"Error while: \n"+error);
}
message.reply("BETA");
message.react(not_stable);
}
if (member === undefined) {
message.reply("There is no user in your command");
message.react(failed);
}
}
if (message.content === "ping") {
message.reply("PAMINHING pong");
message.react(done);
}
if (message.content === "timeout <@"+member.id+">") {
if (member === undefined) {
message.reply("Please do it manually");
message.react(failed)
}
else {
member.timeout(5 * 60 * 1000, 'Time to take a break');
message.reply("Timed out for 5min");
message.react(done);
}
}
if (message.content === "ids") {
message.reply("This is under construction and doesn't work");
}
})
client.login(process.env.TOKEN);
The error is always that noting after member.
is recognised and I don't find the solution I'm new to js. ya thx for ya help :D
It's because your member
variable is not a GuildMember
, but a User
. You try to get the roles of a User
, but only GuildMembers
have roles.
To fix this, you can use message.mentions.members.first()
instead as message.mentions.members
returns a GuildMember
:
var member = message.mentions.members.first();