я хочу отправить файл по каналу разногласий и бот прочитает этот файл - PullRequest
0 голосов
/ 17 января 2020

я разработчик диссонирующих ботов. и я хочу знать, как я могу заставить бота читать файл, который я отправляю на дискорд-сервере, например:

!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);
  });
                       
                })
              
                
}

но это не сработало .. кто-то может мне помочь, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 18 января 2020

const Discord = require("discord.js");
const fs = require("fs")
var 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.url, function (error, response, body) {
                        if (!error && response.statusCode == 200) {
                            let data = body;
                          console.log(error)
                          console.log(response)
                          console.log(body)
                          console.log(data)
                            }
                        });

                })
                .catch(console.error)
}

это новый код, который я использую, и он не работает ..

0 голосов
/ 17 января 2020

Вы не можете прочитать вложение как файл. Вам нужно получить это приложение от 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)
    }
}
...