DNDQoteGrabber/main.js

123 lines
3.5 KiB
JavaScript

const config = require('./config.json');
const discordToken = config.token;
const outputFile = config.path;
const Discord = require('discord.js');
const fs = require('fs');
const readline = require('readline');
const client = new Discord.Client({
intents: [
Discord.GatewayIntentBits.Guilds,
Discord.GatewayIntentBits.MessageContent,
Discord.GatewayIntentBits.GuildMessages
]
})
async function parseMessages() {
try {
const fileStream = fs.createReadStream('message.txt');
const rl = readline.createInterface({
input: fileStream,
crlfDelay: Infinity
});
let lines = [];
for await (const line of rl) {
// Process the line.
let newline = "*"+line.replace(/ -/g, " - ").replace(/- /g, " - ").replace(/ /g, " ").replace(/- /g, '* - **').replace(/"/g, "'").replace(/ \* - \*\*/g, "*\n - **")+"**";
/*
let newline1 = line.replace(/-/g, " - ");
let newline2 = newline1.replace(/ /g, " ");S
let newLine3 = '*' + newline2.replace(/- /g, '* - **') + '**';
let newline4 = newLine3.replace(/"/g, "'");
*/
console.log("Writing: " + newline)
lines.push(newline);
}
// Write to JSON file
fs.writeFileSync(outputFile, JSON.stringify(lines, null, 2));
} catch (error) {
console.error('An error occurred:', error);
}
};
async function fetchAllMessages() {
return new Promise(async (resolve, reject) => {
const channel = client.channels.cache.get("1184068486436229160");
let messages = [];
// Create message pointer
let message = await channel.messages
.fetch({
limit: 1
})
.then(messagePage => (messagePage.size === 1 ? messagePage.at(0) : null));
while (message) {
await channel.messages
.fetch({
limit: 100,
before: message.id
})
.then(messagePage => {
messagePage.forEach(msg => messages.push(msg));
// Update our message pointer to be the last message on the page of messages
message = 0 < messagePage.size ? messagePage.at(messagePage.size - 1) : null;
});
}
messages.forEach(msg => {
const regex = /\- ?\S+$/;
const text = msg.content.replace(/\r?\n/g, ' ');
if (regex.test(text)) {
fs.appendFile('message.txt', text + "\n", function(err) {
if (err) reject(err);
});
}
});
resolve();
});
}
client.on('ready', async () => {
console.log("Ready!")
fs.writeFile('message.txt', '', function(err) {
if (err) {
return console.log(err);
}
console.log("File was cleared!");
});
fetchAllMessages().then(() => {
parseMessages();
}).catch((err) => {
console.error('An error occurred:', err);
});
});
client.on('messageCreate', message => {
const regex = /\- ?\S+$/;
const text = message.content;
if (regex.test(text)) {
fs.appendFile('message.txt', message.content.replace(/\r?\n/g, ' ') + "\n", function(err) {
if (err) throw err;
});
parseMessages();
}
});
client.login(discordToken);