【问题标题】:How do I make a discord bot welcome command and leave command如何制作不和谐机器人欢迎命令和离开命令
【发布时间】:2021-04-19 16:21:05
【问题描述】:

我想创建一个嵌入式欢迎命令和离开命令。我想为加入服务器的人提供嵌入式 DMS 消息。

这是我目前的代码:

const fs = require('fs');
const Discord = require('discord.js');
const {
  prefix,
  token
} = require('./config.json');

const client = new Discord.Client();
client.commands = new Discord.Collection();

const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));

for (const file of commandFiles) {
  const command = require(`./commands/${file}`);
  client.commands.set(command.name, command);
}

const cooldowns = new Discord.Collection();

client.on('guildMemberAdd', member => {
  if (!member.guild) return;
  let guild = member.guild
  let channel = guild.channels.cache.find(c => c.name === "welcome");
  let membercount = guild.members
  if (!channel) return;
  let embed = new Discord.MessageEmbed().setColor("GREEN").setTitle("New Server Member!").setDescription(`Welcome, ${member.user.tag} to **${guild.name}!**`).setThumbnail(member.user.displayAvatarURL()).setFooter(`You are the ${membercount}th member to join`);
  message.guild.channels.cache.find(i => i.name === 'sp').send(embed)
});

client.on("ready", () => {
  console.log(`Logged in as ${client.user.tag}!`);
  client.user.setPresence({
      status: "idle", //You can show online, idle....       activity: {
      name: "with lower lifeforms!", //The message shown            type: "PLAYING", // url: "" //PLAYING: WATCHING: LISTENING: STREAMING:
    }
  });
});

client.on('message', message => {
  if (!message.content.startsWith(prefix) || message.author.bot) return;

  const args = message.content.slice(prefix.length).trim().split(/ +/);
  const commandName = args.shift().toLowerCase();
  const command = client.commands.get(commandName) || client.commands.find.Discord(cmd => cmd.aliases && cmd.aliases.includes(commandName));

  if (!command) return;

  if (command.guildOnly && message.channel.type === 'dm') {
    return message.reply('I can\'t execute that command inside DMs!');
  }

  if (command.args && !args.length) {
    let reply = `You didn't provide any arguments, ${message.author}!`;

    if (command.usage) {
      reply += `\nThe proper usage would be: \`${prefix}${command.name} ${command.usage}\``;
    }
    return message.channel.send(reply);
  }

  if (!cooldowns.has(command.name)) {
    cooldowns.set(command.name, new Discord.Collection());
  }
  const now = Date.now();
  const timestamps = cooldowns.get(command.name);
  const cooldownAmount = (command.cooldown || 3) * 1000;
  if (timestamps.has(message.author.id)) {
    if (timestamps.has(message.author.id)) {
      const expirationTime = timestamps.get(message.author.id) + cooldownAmount;
      timestamps.set(message.author.id, now);
      setTimeout(() => timestamps.delete(message.author.id), cooldownAmount);
      if (now < expirationTime) {
        const timeLeft = (expirationTime - now) / 1000;
        return message.reply(`please wait ${timeLeft.toFixed(1)} more second(s) before reusing the \`${command.name}\` command.`);
      }
    }
  }

  try {
    command.execute(message, args);
  } catch (error) {
    console.error(error);
    message.reply('there was an error trying to execute that command!');
  }
});

client.login(token);

【问题讨论】:

  • 你有意向吗?

标签: javascript discord command discord.js


【解决方案1】:

现在在 Discord 上,您需要启用意图。为此,请转到Discord Developer Portal,选择您的应用程序,然后转到Bot 选项卡。如果您向下滚动大约一半,您会看到一个名为Privileged Gateway Intents 的部分。您需要在该标题下打勾Server Members Intent。对于您正在做的事情,Presence Intent 不应该是必需的,但您可以勾选它以防万一。

【讨论】:

    猜你喜欢
    • 2018-07-21
    • 2017-04-29
    • 1970-01-01
    • 2017-05-31
    • 2018-11-10
    • 2020-07-09
    • 2021-10-21
    • 2022-01-15
    • 2021-06-17
    相关资源
    最近更新 更多