Discord.js 在嵌入链接中将 api 连接到不和谐机器人

Posted

技术标签:

【中文标题】Discord.js 在嵌入链接中将 api 连接到不和谐机器人【英文标题】:Discord.js connecting api to discord bot in an embed link 【发布时间】:2021-09-26 07:18:10 【问题描述】:

我一直在尝试编写一个机器人来发布和嵌入链接,以根据用户输入的数字显示漫画的标题、标签等。我正在查看的 api 是 This,我想知道将它连接到我的不和谐机器人的最佳方式是什么?

client.on("message", (message) => 
    if (!message.content.startsWith(prefix)) return;
    if (message.content.startsWith(prefix)) 
        let chosenNum = message.content.match(/\d+/)?.[0].slice(0);
        if (chosenNum.length > 6) 
          message.channel.send("**1-6 digits only**")
         else
        message.channel.send(`$chosenNum`)
      
    
);

【问题讨论】:

您到底有什么问题?您已经从用户输入中获得了数字。该软件包有一个很好的文档。您现在可以检查 nhentai.exists(id) 是否,然后使用 nhentai.getDoujin(id) 获取可以在嵌入中使用的 JSON 对象。 嗨,很抱歉不清楚。我似乎不明白如何获取嵌入的 JSON 对象。 @ZsoltMeszaros ^ 【参考方案1】:

您选择的包有一个非常简单的 API。您所需要的只是nhentai.exists()nhentai.getDoujin() 方法。第一个可以检查用户提交的 ID 是否存在,第二个可以获取 JSON 对象,用于填充嵌入。

看看下面的例子:

const  Client, MessageEmbed  = require('discord.js');
const nhentai = require('nhentai-js');

const client = new Client();
const prefix = '!';

client.on('message', async (message) => 
  if (!message.content.startsWith(prefix)) return;
  // create an args variable that slices off the prefix and splits it into an array
  const args = message.content.slice(prefix.length).split(/ +/);
  // create a command variable by taking the first element in the array
  // and removing it from args
  const command = args.shift().toLowerCase();

  if (command === 'hen') 
    const chosenNum = args[0]?.match(/\d+/)?.[0];

    if (!chosenNum)
      return message.channel.send('You need to provide a number');

    if (chosenNum.length > 6)
      return message.channel.send('**1-6 digits only**');

    try 
      if (!(await nhentai.exists(chosenNum)))
        return message.channel.send(`No results found for "$chosenNum".`);

      // res is your JSON object, feel free to console.log its content
      const res = await nhentai.getDoujin(chosenNum);
      const embed = new MessageEmbed()
        .setColor('#ed2553')
        .setTitle(res.title)
        .setImage(res.pages[0])
        .setURL(res.link)
        .addField('Pages', res.details.pages[0], true)
        .addField('Uploaded', res.details.uploaded[0], true);

      if (res.details.languages)
        embed.addField('Languages', res.details.languages.join(', '), true);
      if (res.details.characters)
        embed.addField('Top characters', res.details.characters.slice(0, 3).join(', '), true);
      if (res.details.tags)
        embed.addField('Top tags', res.details.tags.slice(0, 3).join(', '), true);

      return message.channel.send(embed);
     catch (err) 
      console.log(err);
      return message.channel.send('Oops, there was an error. Maybe try again?!');
    
  
);

【讨论】:

以上是关于Discord.js 在嵌入链接中将 api 连接到不和谐机器人的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js 男高音 gif 丰富的嵌入

如何在嵌入 discord.js V13 时使用下载的图像

可以发送嵌入消息的 Discord.js 机器人

MySQL 数据库 discord.js

在 discord.js 中将频道分配给类别

在 discord.js 中将数组作为消息发送