Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const Discord = require('discord.js');
- const client = new Discord.Client();
- const hideriToken = "TOKEN";
- const hideriId = "BOT USER ID"; // unused
- const fetchLimit = 50;
- const cdTime = 3000;
- var allTexts = [];
- var bckFile = 0;
- const fs = require('fs');
- /**
- * @returns Promise<string> contents
- */
- function fileWrite(path, content, options) {
- return new Promise((resolve, reject) => {
- var callback = (err, data) => {
- if (err) reject(err);
- else resolve(data);
- };
- fs.writeFile(path, content, options ? options : callback, options ? callback : null);
- });
- }
- function sleep(time) {
- return new Promise(resolve => setTimeout(resolve, time));
- }
- client.on('ready', () => {
- console.log(`Logged in as ${client.user.tag}!`);
- let alexaChan = client.channels.get("ID"); // id of DM channel to back up
- async function processMessages(msgs) {
- let last = undefined;
- for (let entry of msgs.entries()) {
- let msg = entry[1];
- let id = entry[0];
- last = id;
- let msgObj = {
- id: id,
- content: msg.content,
- created: msg.createdAt,
- author: msg.author.tag
- };
- if (msg.attachments.size > 0) {
- let attachs = [];
- for (let attachEntry of msg.attachments.entries()) {
- let attach = attachEntry[1];
- attachs.push(attach.url);
- }
- msgObj.attachments = attachs;
- }
- allTexts.push(msgObj);
- }
- return last;
- }
- async function fetchNext(before) {
- let options = { limit: fetchLimit };
- if (before) {
- options.before = before;
- }
- alexaChan.fetchMessages(options).then(async (msgs) => {
- newBefore = await processMessages(msgs);
- console.log('targetFolder/backup' + bckFile + ".json");
- await fileWrite('targetFolder/backup' + bckFile + ".json", JSON.stringify(allTexts), 'utf8');
- bckFile++;
- if (msgs.size >= fetchLimit) {
- await sleep(cdTime);
- fetchNext(newBefore);
- }
- });
- }
- fetchNext();
- });
- client.login(hideriToken);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement