OiO.lk Community platform!

Oio.lk is an excellent forum for developers, providing a wide range of resources, discussions, and support for those in the developer community. Join oio.lk today to connect with like-minded professionals, share insights, and stay updated on the latest trends and technologies in the development field.
  You need to log in or register to access the solved answers to this problem.
  • You have reached the maximum number of guest views allowed
  • Please register below to remove this limitation

TypeError: Cannot read properties of null (reading ‘id’)

  • Thread starter Thread starter Misa
  • Start date Start date
M

Misa

Guest
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

Code:
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

<p>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</p>
<p>Below is my index.js</p>
<pre class="lang-js prettyprint-override"><code>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);
</code></pre>
<p>When you run this it says, TypeError: cannot read properties of null (reading ‘id’)</p>
<p>at index.js:33:52</p>
 

Latest posts

M
Replies
0
Views
1
MOHAMED AMIIN ABDI AADAN
M
Top