DiscordBot/main.js

86 lines
2.1 KiB
JavaScript
Raw Normal View History

2024-11-17 16:42:48 +01:00
import * as dotenv from 'dotenv';
2024-11-24 18:44:32 +01:00
import { Client, GatewayIntentBits } from 'discord.js';
import {fetchText, getChanges} from './text.js';
import {createChangelogEmbed} from "./embed builder.js";
import express from 'express';
2024-11-24 18:53:34 +01:00
import cors from 'cors';
2024-11-17 16:42:48 +01:00
dotenv.config();
const token = process.env.CLIENT_AUTH_TOKEN;
2024-11-24 18:53:34 +01:00
const accesstoken = process.env.GITHUB_ACCESS_TOKEN;
const allowedOrigin = process.env.REQUEST_ORIGIN;
2024-11-17 16:42:48 +01:00
2024-11-24 18:44:32 +01:00
const app = express();
2024-11-17 16:42:48 +01:00
const client = new Client({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
],
});
2024-11-24 18:53:34 +01:00
app.use(express.json());
app.use(cors({
origin: allowedOrigin,
}))
2024-11-17 16:42:48 +01:00
client.on('ready', async () => {
console.log('Ready!');
try {
2024-11-24 18:44:32 +01:00
console.log('client ready');
2024-11-17 16:42:48 +01:00
} catch (error) {
console.error(error);
}
})
2024-11-24 18:53:34 +01:00
app.post('/changelog', async (message) => {
2024-11-24 18:44:32 +01:00
let result = await fetchText("https://tee.intjulscha.de/Julscha/changelog/raw/branch/main/changelog_november.md", accesstoken);
console.log(result);
result = await getChanges(result);
const embed = createChangelogEmbed();
message.channel.send({ embeds: [embed] });
2024-11-24 18:53:34 +01:00
});
2024-11-24 18:44:32 +01:00
app.post('/add-role', async (req, res) => {
const { guildId, userId, roleId } = req.body;
const guild = await client.guilds.fetch(guildId);
const members = await guild.members.fetch(userId);
try {
await members.roles.add(roleId);
res.status(200).send('Role added successfully');
} catch (error) {
console.error(error);
res.status(500).send('error');
}
});
app.post('/remove-role', async (req, res) => {
const { guildId, userId, roleId } = req.body;
const guild = await client.guilds.fetch(guildId);
const members = await guild.members.fetch(userId);
try {
await members.roles.remove(roleId);
res.status(200).send('Role removed successfully.');
} catch (error) {
console.error(error);
res.status(500).send('error');
}
});
const PORT = process.env.APIPORT || 3000;
app.listen(PORT, () => {
console.log(`Listening on ${PORT}`);
})
2024-11-17 16:42:48 +01:00
client.login(token);