📌  相关文章
📜  discord js 消息 - Javascript (1)

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

Discord.js 消息 - JavaScript

Discord.js 是一个基于 Node.js 的库,用于与 Discord API 进行交互。它允许开发者构建和管理 Discord 机器人,并控制 Discord 服务器上的消息、频道和用户。

发送消息

要向 Discord 服务器发送消息,我们需要创建一个 Discord.Message 对象,并使用 Discord.TextChannel.send() 方法将其发送到指定的频道。

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

client.on('ready', () => {
    console.log('已登录 Discord!');
});

client.on('message', (message) => {
    if (message.content === 'ping') {
        const channel = message.channel;
        channel.send('Pong!');
    }
});

client.login('您的 Bot Token');

在上面的示例中,当机器人接收到 ping 消息时,它会向同一频道回复 Pong!

发送 Embeds

Discord.MessageEmbed 对象允许我们将消息装饰为更复杂的形式,包括颜色、标题、描述、图片、链接等等。

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

client.on('ready', () => {
    console.log('已登录 Discord!');
});

client.on('message', (message) => {
    if (message.content === 'info') {
        const embed = new Discord.MessageEmbed()
            .setColor('#0099ff')
            .setTitle('关于本 Bot')
            .setDescription('这是一个演示用的 Discord 机器人。')
            .setThumbnail(client.user.avatarURL())
            .addFields(
                { name: '作者', value: 'Alice' },
                { name: '版本', value: '1.0.0' },
                { name: 'GitHub', value: 'https://github.com/example' },
            )
            .setTimestamp();

        const channel = message.channel;
        channel.send(embed);
    }
});

client.login('您的 Bot Token');

在上面的示例中,当机器人接收到 info 消息时,它会向同一频道发送一条 Embeds 消息,包括关于本机器人的信息。

响应 Reaction

Discord.Message 对象有一些方法可以用来响应用户对消息的回应(Reaction)。Message.react() 方法可以在消息上添加一个所需的 Reaction。

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

client.on('ready', () => {
    console.log('已登录 Discord!');
});

client.on('message', (message) => {
    if (message.content === 'vote') {
        message.react('👍')
            .then(() => message.react('👎'))
            .catch(() => console.error('无法添加 Reaction!'));
    }
});

client.login('您的 Bot Token');

在上面的示例中,当机器人接收到 vote 消息时,它会在该消息上添加两个 Reaction:👍 和 👎。

响应事件

除了接收到消息外,Discord.Client 还可以响应其他各种 Discord 事件,包括服务器成员加入、离开、被禁言等等。每个事件都有相应的名称和一组回调函数。以下是一些示例:

client.on('guildMemberAdd', (member) => {
    const channel = member.guild.systemChannel;
    if (channel) {
        channel.send(`欢迎 ${member} 加入了我们的服务器!`);
    }
});

client.on('guildMemberRemove', (member) => {
    const channel = member.guild.systemChannel;
    if (channel) {
        channel.send(`${member} 已经离开了我们的服务器。`);
    }
});

client.on('voiceStateUpdate', (oldState, newState) => {
    const channel = newState.channel;
    if (channel) {
        channel.members.forEach((member) => {
            member.roles.add('voice-active');
        });
    }
});

在上面的示例中,我们使用 client.on() 方法监听了三个 Discord 事件:guildMemberAddguildMemberRemovevoiceStateUpdate。当这些事件发生时,机器人将在相关频道上发送一条消息,并将语音频道内所有成员的用户角色设置为 voice-active

最佳实践

为了保持代码整洁并使其易于阅读和维护,请务必按照以下最佳实践实现您的 Discord 机器人:

  1. 创建单独的 .js 文件来存储您的机器人代码。
  2. 使用 dotenvconfig 等库,从环境变量中获取您的机器人凭据信息,而不是在代码中直接写入。
  3. 使用定时器避免不必要的 API 请求并限制机器人被禁用的可能性。
  4. 了解 Discord API 中的限制和权限,以便您的机器人不违反 Discord 的服务条款。

希望这篇文章对您有帮助,并希望您能够创建出令人震惊的 Discord 机器人。