Introduces a new server mode configuration system (Federation/Standalone) with associated command changes, dynamic status rotation for the bot, and adds new commands and features. Replit-Commit-Author: Agent Replit-Commit-Session-Id: aed2e46d-25bb-4b73-81a1-bb9e8437c261 Replit-Commit-Checkpoint-Type: intermediate_checkpoint Replit-Commit-Event-Id: b08e6ba5-7498-4b9f-b1c9-7dc11b362ddd Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/3bdfff67-975a-46ad-9845-fbb6b4a4c4b5/aed2e46d-25bb-4b73-81a1-bb9e8437c261/R9PkDi8 Replit-Helium-Checkpoint-Created: true
40 lines
1.4 KiB
JavaScript
40 lines
1.4 KiB
JavaScript
const { SlashCommandBuilder, EmbedBuilder } = require('discord.js');
|
|
const { getServerMode, getEmbedColor } = require('../utils/modeHelper');
|
|
|
|
module.exports = {
|
|
data: new SlashCommandBuilder()
|
|
.setName('qr')
|
|
.setDescription('Generate a QR code')
|
|
.addStringOption(option =>
|
|
option.setName('text')
|
|
.setDescription('The text or URL to encode')
|
|
.setRequired(true)
|
|
.setMaxLength(500)
|
|
)
|
|
.addIntegerOption(option =>
|
|
option.setName('size')
|
|
.setDescription('QR code size (default: 200)')
|
|
.setRequired(false)
|
|
.setMinValue(100)
|
|
.setMaxValue(500)
|
|
),
|
|
|
|
async execute(interaction, supabase, client) {
|
|
const text = interaction.options.getString('text');
|
|
const size = interaction.options.getInteger('size') || 200;
|
|
const mode = await getServerMode(supabase, interaction.guildId);
|
|
|
|
const encodedText = encodeURIComponent(text);
|
|
const qrUrl = `https://api.qrserver.com/v1/create-qr-code/?size=${size}x${size}&data=${encodedText}`;
|
|
|
|
const embed = new EmbedBuilder()
|
|
.setColor(getEmbedColor(mode))
|
|
.setTitle('📱 QR Code Generated')
|
|
.setDescription(`\`${text.length > 100 ? text.substring(0, 100) + '...' : text}\``)
|
|
.setImage(qrUrl)
|
|
.setFooter({ text: `Size: ${size}x${size}` })
|
|
.setTimestamp();
|
|
|
|
await interaction.reply({ embeds: [embed] });
|
|
},
|
|
};
|