📜  discord 报告命令 - Javascript (1)

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

Discord 报告命令 - Javascript

简介

Discord 命令是一种让用户与机器人互动的方式,通常用于向机器人报告问题或请求信息。报告命令是一种常见的 Discord 命令,用于向机器人报告错误、崩溃或其他问题。在本文中,我们将介绍如何用 Javascript 编写一个 Discord 报告命令,并返回 Markdown 格式的结果。

准备工作

在编写 Discord 报告命令之前,我们需要一些准备工作:

  1. 一个 Discord 机器人账号。如果没有,请参考 Discord Developer Portal 官方文档
  2. 安装 discord.js,一个用于创建 Discord 机器人的 Javascript 库。
  3. 一个文本编辑器,例如 Visual Studio Code
编写代码

首先,让我们创建一个新文件 report.js,并添加以下代码:

const Discord = require('discord.js');

exports.run = async (client, message, args) => {
  // 在这里编写报告命令的逻辑
}

exports.help = {
  name: 'report',
  description: '报告问题或错误',
  usage: 'report <问题描述>'
};

这是一个基本结构,导出了一个 run 函数,该函数在用户输入报告命令时被调用。该函数需要三个参数:

  1. client:一个 Discord 客户端实例,即你的机器人程序。
  2. message:一个 Discord 消息对象,包含了用户发送的消息的详细信息。
  3. args:一个包含用户传递给命令的参数的数组。

接下来,在函数内部添加以下代码:

const content = args.join(' ');
const embed = new Discord.MessageEmbed()
    .setColor('#ff0000')
    .setTitle('问题报告')
    .setDescription(content)
    .setTimestamp()
    .setFooter(`报告人:${message.author.tag}`);

await client.channels.cache.get('CHANNEL_ID').send(embed);

这段代码将用户输入的文本内容转换成一个嵌入(embed),并将其发送到一个指定的频道。注意将 CHANNEL_ID 替换为你要发送到的频道的 ID。

最后,我们需要导出一个 help 对象,其中包含命令的名称、描述和用法信息:

exports.help = {
  name: 'report',
  description: '报告问题或错误',
  usage: 'report <问题描述>'
};
返回 Markdown 格式的结果

为了返回 Markdown 格式的结果,我们需要在报告命令的逻辑中使用 Discord.js 内置的 MessageEmbed 类,该类允许我们创建富文本消息。将上面的 embed 变量替换为以下代码:

const content = args.join(' ');
const embed = new Discord.MessageEmbed()
    .setColor('#ff0000')
    .setTitle('问题报告')
    .setDescription(content)
    .setTimestamp()
    .setFooter(`报告人:${message.author.tag}`);

const { channel } = await client.channels.cache.get('CHANNEL_ID').send(embed);
const messageEmbed = await channel.messages.fetch({ limit: 1 });
const messageContent = messageEmbed.first().content;

return {
  response_type: 'in_channel',
  text: messageContent
};

这段代码将文本内容转换为嵌入对象,并使用 await 将其发送到指定的频道。然后,它使用 fetch 方法获取最新的消息,并将其转换为 Markdown 格式的文本。最后,将这些结果返回到 Discord。

注意,这里我们使用了 response_type: 'in_channel',这意味着结果将在频道中公开显示。如果你想在私人消息中返回结果,将其替换为 response_type: 'ephemeral'

总结

现在你已经了解了如何创建 Discord 报告命令,并返回 Markdown 格式的结果。当用户在 Discord 中报告问题时,他们可以使用此命令提交错误或其他相关信息,机器人将把它们发送到指定的频道,供管理员或其他人在频道中查看。