discord.js如何以代码块形式发送消息?

4

我正在尝试制作一个机器人,它将向我的频道发送一条消息,但是要使用代码块,因为使用RichEmbed不起作用。

我查看了其他一些机器人,它们发送的消息就像这样:

```
  Their title
    Body text blah blah
```

我想发送类似的东西,但是当我尝试时

var msg = ``` 
  Their Title
    Body text blah blah
```;

并且

var msg = "```
  Their Title
    Body text blah blah
```";

这些不起作用。

const Discord = require("discord.js");
const bot = new Discord.Client();
const TOKEN = "MY_TOKEN_ID";

bot.on("message", function(message) {

    console.log(message.content);

    if ( message.author.equals(bot.user)) 
        return;

    message.channel.send(msg);



});

bot.login(TOKEN);

我的代码在上面,有什么想法如何发送代码块?

在你第二个例子中,你写成了 var msg " " ,它没有等号。这是你代码里真的这样写的还是你为了举例而省略了等号呢? - Wright
我在示例中遗漏了它,现在已经修复了。 - Mad_ Questionnaire
“不起作用”并不是很有帮助。你期望看到什么,实际上又看到了什么? - André Dion
4个回答

10

你尝试使用过这个吗?

var msg = "```Their Title\nBody text blah blah```";

\n是表示换行的符号,基本上就像写作时按下回车键一样。之后可以将它发送为普通文本消息。


谢谢,这个可行,我不知道你可以添加 \n,我以为它们只会打印 \n 的字面意思。 - Mad_ Questionnaire

2
function codeblock(
    language:
        | "asciidoc"
        | "autohotkey"
        | "bash"
        | "coffeescript"
        | "cpp"
        | "cs"
        | "css"
        | "diff"
        | "fix"
        | "glsl"
        | "ini"
        | "json"
        | "md"
        | "ml"
        | "prolog"
        | "py"
        | "tex"
        | "xl"
        | "xml",
    code: string,
) {
    return `\`\`\`${language}\n${code}\`\`\``;
}

使用方法

const msg = codeblock("css", `
#element {
    width: 500 px;
}
.button {
    width: 300 px;
}
`);

0

如果还有人在寻找,你可以这样做:

const { codeBlock } = require("@discordjs/builders");

<channel>.send(codeBlock("js", 'var foo = "bar";'));

0

有点奇怪,但你也可以这样做...

msg.channel.send( {
  content: "Please send this as a code block !",
  code: "js"
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接