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

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

Discord.js 机器人活动

简介

Discord.js 是一个用于创建 Discord 机器人的 JavaScript 库。它使开发人员能够以编程方式创建功能强大的机器人,并将其集成到他们的 Discord 服务器中。在这个活动中,我们将学习如何创建一个简单的 Discord 机器人,并使用 Discord.js 库来添加各种功能。

准备工作

在开始之前,您需要确保您的开发环境已安装了 Node.js 和 npm。您还需要一个 Discord 帐户,以便在 Discord 上创建自己的服务器,并将机器人添加到其中。最后,您需要使用 Discord 开发者门户创建一个新的机器人应用程序,并获取机器人的令牌。

创建 Discord 机器人

要创建 Discord 机器人,请按照以下步骤操作:

  1. 使用 npm 初始化新的 Node.js 项目并安装 discord.js 库。
npm init -y
npm install discord.js
  1. 在项目根目录创建一个名为 index.js 的文件,并添加以下代码:
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');
  1. your-token-goes-here 替换为您在 Discord 开发者门户中为机器人应用程序生成的令牌。

  2. 运行以下命令来启动机器人:

node index.js

如果一切顺利,您的机器人应该已经登录到您的 Discord 服务器,并且能够响应 ping 消息。

添加更多功能

现在我们已经成功创建了一个简单的 Discord 机器人,让我们来看看一些更有趣的功能。

帮助命令

为了使您的机器人更加友好和易于使用,您可能想要添加一个帮助命令,该命令将列出机器人可用的所有命令和功能。

const commands = {
    help: {
        description: '显示可用的命令列表',
        exec(msg, args) {
            const helpMsg = Object.keys(commands).map(command => `**${command}:** ${commands[command].description}`).join('\n');
            msg.channel.send(helpMsg);
        }
    }
};

client.on('message', msg => {
    if (msg.content.startsWith('!')) {
        const [command, ...args] = msg.content.slice(1).split(' ');

        if (commands[command]) {
            commands[command].exec(msg, args);
        } else {
            msg.reply(`未知命令 ${command}。`);
        }
    }
});

这将创建一个名为 help 的命令,当您的机器人收到 !help 消息时,它将回复一个包含所有可用命令的消息。

模拟骰子

另一个有趣的功能是模拟骰子。我们可以编写一个命令,该命令接受一个参数并生成一个指定面数的随机数。例如,发送 !roll 6 将生成介于 1 到 6 之间的随机数。

const commands = {
    // ...
    roll: {
        description: '模拟骰子',
        exec(msg, [sides]) {
            sides = parseInt(sides);

            if (isNaN(sides)) {
                msg.reply('必须指定骰子面数。');
                return;
            }

            const result = Math.floor(Math.random() * sides) + 1;
            msg.reply(`您掷出了 ${result}!`);
        }
    }
};

// ...
名言警句

最后,让我们添加一个简单的名言警句功能。我们可以使用第三方 API(例如 They Said So Quotes API)来获取名言警句,并在机器人收到 !quote 命令时将其发送到 Discord。

const fetch = require('node-fetch');

const commands = {
    // ...
    async quote(msg) {
        const response = await fetch('https://quotes.rest/qod?category=inspire');
        const data = await response.json();
        const quote = data.contents.quotes[0].quote;

        msg.channel.send(`_${quote}_`);
    }
};

// ...
结论

感谢您参加本次 Discord.js 机器人活动。希望您已经了解了如何使用 Discord.js 库创建自己的机器人,并添加各种有用的功能。如果您有任何疑问或问题,请随时向 Discord.js 社区寻求帮助,他们将非常乐意为您提供支持。