So, I’m trying to make a discord forums moderating bot. I honestly have no idea how the new discord.js works? Last time i coded a discord bot was like 2 yrs ago and I’m using the same functions as my old bot, but now its not working
Below is my index.js
const {
Client,
GatewayIntentBits,
SlashCommandBuilder,
Routes,
} = require('discord.js');
const { REST } = require('@discordjs/rest');
const TOKEN = 'your-bot-token-here'; // Put your bot token here
const client = new Client({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
GatewayIntentBits.GuildMembers,
],
});
const commands = [
new SlashCommandBuilder()
.setName('modlog')
.setDescription('Sets the modlog channel')
.addChannelOption((option) =>
option
.setName('channel')
.setDescription('The channel to log moderation actions')
.setRequired(true),
),
].map((command) => command.toJSON());
const rest = new REST({ version: '10' }).setToken(TOKEN);
(async () => {
try {
console.log('Started refreshing application (/) commands.');
await rest.put(Routes.applicationCommands(client.user.id), {
body: commands,
});
console.log('Successfully reloaded application (/) commands.');
} catch (error) {
console.error(error);
}
})();
let modLogChannelId = null;
client.once('ready', () => {
console.log(`Logged in as ${client.user.tag}`);
});
client.on('interactionCreate', async (interaction) => {
if (!interaction.isCommand()) return;
const { commandName, options, member } = interaction;
if (commandName === 'modlog') {
if (!member.permissions.has('Administrator')) {
await interaction.reply({
content: 'You do not have permission to use this command.',
ephemeral: true,
});
return;
}
modLogChannelId = options.getChannel('channel').id;
await interaction.reply(
`Moderation log channel set to <#${modLogChannelId}>`,
);
}
});
const logAction = async (message) => {
if (modLogChannelId) {
const logChannel = await client.channels.fetch(modLogChannelId);
logChannel.send(message);
}
};
// Event listeners for forum actions
client.on('threadCreate', (thread) => {
if (thread.parent && thread.parent.type === 'GUILD_FORUM') {
logAction(`Forum created: ${thread.name} by ${thread.owner.user.tag}`);
}
});
client.on('threadUpdate', (oldThread, newThread) => {
if (newThread.parent && newThread.parent.type === 'GUILD_FORUM') {
if (oldThread.archived !== newThread.archived && newThread.archived) {
logAction(
`Forum archived: ${newThread.name} by ${newThread.owner.user.tag}`,
);
}
if (oldThread.locked !== newThread.locked && newThread.locked) {
logAction(
`Forum locked: ${newThread.name} by ${newThread.owner.user.tag}`,
);
}
}
});
client.on('threadDelete', (thread) => {
if (thread.parent && thread.parent.type === 'GUILD_FORUM') {
logAction(`Forum deleted: ${thread.name} by ${thread.owner.user.tag}`);
}
});
client.login(TOKEN);
When you run this it says, TypeError: cannot read properties of null (reading ‘id’)
at index.js:33:52