首页 > 解决方案 > 我想在不和谐频道发送一个文件,机器人会读取这个文件

问题描述

我是不和谐机器人的开发者。我想知道如何让机器人读取我在不和谐服务器中发送的文件,例如:

!read (file)

机器人将记录文件的内容或将其发送

message.channel.send(content)

我尝试了一些东西,但它们不起作用..

这是我尝试过的代码:

const Discord = require("discord.js");
const fs = require("fs")
module.exports.run = async(client, message, args, item) => {
 if(!message.member.hasPermission('ADMINISTRATOR')) return

      let useTips = new Discord.RichEmbed();
                useTips.setAuthor(message.author.tag, message.author.avatarURL)
                useTips.setDescription('Please Send A File')
                useTips.setColor(0xdb001d)
      message.channel.send(useTips)
      const filter = m => m.author.id === message.author.id;
      await message.channel.awaitMessages(filter, {max: 1, time: 30000,errors: ['time']})
                .then(collected => {
                        let collection = collected.first();
                        let file21 = collection.attachments;
                        message.channel.send(file21)
                          fs.readFile(file21, (err, data) => {
                          message.channel.send(data);
  });
                       
                })
              
                
}

但它没有用..有人可以帮助我吗?

标签: javascriptfilediscorddiscord.jsattachment

解决方案


您不能将附件作为文件读取。您需要从 url 获取此附件。1 其使用节点请求库的方式

    const Discord = require("discord.js");
    const fs = require("fs")
    const request = require('request');
    module.exports.run = async(client, message, args, item) => {
     if(!message.member.hasPermission('ADMINISTRATOR')) return

          let useTips = new Discord.RichEmbed();
                    useTips.setAuthor(message.author.tag, message.author.avatarURL)
                    useTips.setDescription('Please Send A File')
                    useTips.setColor(0xdb001d)
          message.channel.send(useTips)
          const filter = m => m.author.id === message.author.id;
          await message.channel.awaitMessages(filter, {max: 1, time: 30000,errors: ['time']})
                    .then(collected => {
                            let collection = collected.first();
                            if(!collection.attachments) return
                            request.get(collection.attachments.array()[0].url, function (error, response, body) {
                            if (!error && response.statusCode == 200) {
                              console.log(body)
                                }
                            });

                    })
                    .catch(console.error)
    }
}

推荐阅读