📅  最后修改于: 2023-12-03 14:40:44.717000             🧑  作者: Mango
Discord 命令是一种让用户与机器人互动的方式,通常用于向机器人报告问题或请求信息。报告命令是一种常见的 Discord 命令,用于向机器人报告错误、崩溃或其他问题。在本文中,我们将介绍如何用 Javascript 编写一个 Discord 报告命令,并返回 Markdown 格式的结果。
在编写 Discord 报告命令之前,我们需要一些准备工作:
首先,让我们创建一个新文件 report.js,并添加以下代码:
const Discord = require('discord.js');
exports.run = async (client, message, args) => {
// 在这里编写报告命令的逻辑
}
exports.help = {
name: 'report',
description: '报告问题或错误',
usage: 'report <问题描述>'
};
这是一个基本结构,导出了一个 run 函数,该函数在用户输入报告命令时被调用。该函数需要三个参数:
client
:一个 Discord 客户端实例,即你的机器人程序。message
:一个 Discord 消息对象,包含了用户发送的消息的详细信息。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 格式的结果,我们需要在报告命令的逻辑中使用 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 中报告问题时,他们可以使用此命令提交错误或其他相关信息,机器人将把它们发送到指定的频道,供管理员或其他人在频道中查看。