Update bot configuration and activity type in schema
- Modified package.json to add a new script for setting the bot banner. - Changed the default activity type in schema.prisma from 'Playing' to 'Watching' for improved bot presence management.
This commit is contained in:
60
apps/bot/scripts/set-bot-banner.ts
Normal file
60
apps/bot/scripts/set-bot-banner.ts
Normal file
@@ -0,0 +1,60 @@
|
||||
/**
|
||||
* Uploads docs/logo/nexumi-banner.png as the bot user banner (and optional bio)
|
||||
* via Discord API.
|
||||
*
|
||||
* Usage (from repo root):
|
||||
* pnpm --filter @nexumi/bot profile:banner
|
||||
*
|
||||
* Requires BOT_TOKEN in the environment (or root/.env / apps/bot/.env).
|
||||
*/
|
||||
import { readFileSync, existsSync } from 'node:fs';
|
||||
import { resolve, dirname } from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
import { config as loadEnv } from 'dotenv';
|
||||
|
||||
const here = dirname(fileURLToPath(import.meta.url));
|
||||
const repoRoot = resolve(here, '../../..');
|
||||
|
||||
for (const candidate of [resolve(repoRoot, '.env'), resolve(here, '../.env')]) {
|
||||
if (existsSync(candidate)) {
|
||||
loadEnv({ path: candidate });
|
||||
}
|
||||
}
|
||||
|
||||
const token = process.env.BOT_TOKEN;
|
||||
if (!token) {
|
||||
console.error('BOT_TOKEN is missing.');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const bannerPath = resolve(repoRoot, 'docs/logo/nexumi-banner.png');
|
||||
if (!existsSync(bannerPath)) {
|
||||
console.error(`Banner not found: ${bannerPath}`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const png = readFileSync(bannerPath);
|
||||
const bannerDataUri = `data:image/png;base64,${png.toString('base64')}`;
|
||||
|
||||
const bio =
|
||||
'Moderation, Community & Integrationen — in einem Bot.\n' +
|
||||
'Dashboard: https://dashboard.nexumi.de\n' +
|
||||
'nexumi.de';
|
||||
|
||||
const response = await fetch('https://discord.com/api/v10/users/@me', {
|
||||
method: 'PATCH',
|
||||
headers: {
|
||||
Authorization: `Bot ${token}`,
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify({ banner: bannerDataUri, bio })
|
||||
});
|
||||
|
||||
const body = await response.text();
|
||||
if (!response.ok) {
|
||||
console.error(`Failed (${response.status}): ${body}`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
console.log('Bot profile updated successfully.');
|
||||
console.log(body);
|
||||
Reference in New Issue
Block a user