📜  discord.js 机器人 - Javascript (1)

📅  最后修改于: 2023-12-03 14:40:44.944000             🧑  作者: Mango

Discord.js 机器人 - Javascript

Discord.js 是一个用于与 Discord 交互的 Node.js 库。它使开发者可以使用 Node.js 编写 Discord 机器人,以便执行各种任务,例如自动回复消息、播放音乐、管理服务器并进行警报等。

安装

要使用 Discord.js,需要先安装 Node.js 以及 Discord.js 库。您可以通过以下命令在终端中安装 Discord.js:

npm install discord.js
Hello World

最简单的 Discord.js 机器人程序是向您的服务器发送“Hello World”消息。以下是代码片段:

const Discord = require('discord.js');
const client = new Discord.Client();

client.on('ready', () => {
  console.log(`Logged in as ${client.user.tag}!`);
});

client.on('message', msg => {
  if (msg.content === 'ping') {
    msg.reply('Pong!');
  }
});

client.login('your-token-goes-here');

这个代码段实际上实现了非常简单,当机器人收到“ping”消息时,它会回复“Pong!”消息。

获取服务器信息

要获取有关服务器的信息,您可以访问 Guild 对象。以下是代码片段:

client.on('message', msg => {
  if (msg.content === '!server') {
    const guild = msg.guild;
    msg.channel.send(`Server name: ${guild.name}\nTotal members: ${guild.memberCount}`);
  }
});

当您的机器人收到“!server”消息时,它将返回有关当前服务器的名称和成员数量的信息。

播放音乐

如果您想让机器人播放音乐,可以使用 play() 函数。以下是程序的代码片段:

// 播放音乐
const ytdl = require('ytdl-core');

if (msg.content === '!play') {
  // 只有在用户在语音频道中时才播放音乐
  if (msg.member.voice.channel) {
    const connection = await msg.member.voice.channel.join();
    const dispatcher = connection.play(ytdl('https://www.youtube.com/watch?v=dQw4w9WgXcQ', { filter: 'audioonly' }));
    dispatcher.on('finish', () => {
      msg.channel.send('Finished playing');
      connection.disconnect();
    });
  } else {
    msg.reply('You need to join a voice channel first!');
  }
}

该代码段会让机器人加入语音频道并播放音乐,一旦音乐播放完毕,机器人将发送一条消息并断开连接。

管理服务器

如果您想让机器人执行一些管理任务,例如删除频道或删除成员,您可以使用 Guild 对象的方法。以下是代码片段:

// 删除频道
if (msg.content === '!delete-channel') {
  if (msg.member.hasPermission('ADMINISTRATOR')) { // 只有管理员才能删除频道
    msg.channel.delete();
  } else {
    msg.reply('You do not have permission to do that!');
  }
}

// 删除成员
if (msg.content === '!ban') {
  if (msg.member.hasPermission('BAN_MEMBERS')) { // 只有可以封禁成员的用户才能封禁成员
    const user = msg.mentions.users.first();
    if (user) {
      const member = msg.guild.member(user);
      if (member) {
        member.ban({ reason: 'They were bad!' }).then(() => {
          msg.reply(`Successfully banned ${user.tag}`);
        }).catch(err => {
          msg.reply('I was unable to ban the member');
          console.error(err);
        });
      } else {
        msg.reply('That user isn\'t in this guild!');
      }
    } else {
      msg.reply('You didn\'t mention the user to ban!');
    }
  } else {
    msg.reply('You do not have permission to do that!');
  }
}

该代码段演示了如何使用 Discord.js 删除频道和成员。当用户发送“!delete-channel”消息且是管理员时,机器人将删除当前频道。当用户发送“!ban @username”消息并具有封禁成员权限时,机器人将尝试封禁提及的用户。

结论

Discord.js 提供了强大的工具和函数来创建和管理 Discord 机器人。无论您是想要创建一个自动回复消息的简单应用程序,还是想创建一个功能丰富的应用程序,例如音乐播放器或服务器管理工具,它都可以满足您的需求。开始使用 Discord.js,让您的机器人开始工作吧!