modified: aethex-bot/public/pricing.html

This commit is contained in:
MrPiglr 2026-03-05 14:34:11 -07:00
parent d07ccd0f53
commit 3a76186fc6
16 changed files with 58 additions and 58 deletions

View file

@ -65,7 +65,7 @@ CORP_GUILD_ID = "373713073594302464"
FOUNDATION_GUILD_ID = "1338564560277344287" FOUNDATION_GUILD_ID = "1338564560277344287"
WHITELISTED_USERS = "113472107526033408" WHITELISTED_USERS = "113472107526033408"
ALERT_CHANNEL_ID = "1435905356932055233" ALERT_CHANNEL_ID = "1435905356932055233"
BASE_URL = "https://bot.aethex.dev" BASE_URL = "https://aethex.bot"
NEXUS_AUTH_URL = "https://aethex.tech" NEXUS_AUTH_URL = "https://aethex.tech"
NEXUS_SERVICE_URL = "https://aethex.cloud" NEXUS_SERVICE_URL = "https://aethex.cloud"

View file

@ -15,7 +15,7 @@ STRIPE_PRICE_BRANDING_PRO=price_xxx
STRIPE_PRICE_BRANDING_ENTERPRISE=price_xxx STRIPE_PRICE_BRANDING_ENTERPRISE=price_xxx
# OAuth & Web Dashboard # OAuth & Web Dashboard
BASE_URL=https://bot.aethex.dev BASE_URL=https://aethex.bot
SESSION_SECRET=random_secret_string SESSION_SECRET=random_secret_string
# Optional: AeThex Realm Guild IDs # Optional: AeThex Realm Guild IDs

View file

@ -609,7 +609,7 @@ client.on('guildCreate', async (guild) => {
}, },
{ {
name: '📖 Need Help?', name: '📖 Need Help?',
value: '[Documentation](https://bot.aethex.dev/commands) • [Support Server](https://discord.gg/aethex)' value: '[Documentation](https://aethex.bot/commands) • [Support Server](https://discord.gg/aethex)'
} }
], ],
footer: { text: 'AeThex Bot • Powering Communities' }, footer: { text: 'AeThex Bot • Powering Communities' },

View file

@ -53,7 +53,7 @@ module.exports = {
.setDescription('Claim your custom URL handle (Pro tier+)') .setDescription('Claim your custom URL handle (Pro tier+)')
.addStringOption(opt => opt .addStringOption(opt => opt
.setName('handle') .setName('handle')
.setDescription('Your custom handle (aethex.dev/YOUR-HANDLE)') .setDescription('Your custom handle (aethex.bot/YOUR-HANDLE)')
.setRequired(true) .setRequired(true)
.setMinLength(3) .setMinLength(3)
.setMaxLength(30) .setMaxLength(30)
@ -132,7 +132,7 @@ module.exports = {
{ name: 'Custom Footer', value: branding.custom_footer_text || '*Not set*', inline: true }, { name: 'Custom Footer', value: branding.custom_footer_text || '*Not set*', inline: true },
{ name: 'Embed Color', value: branding.custom_embed_color || '*Default*', inline: true }, { name: 'Embed Color', value: branding.custom_embed_color || '*Default*', inline: true },
{ name: 'Custom Avatar', value: branding.custom_bot_avatar_url ? '✅ Set' : '*Not set*', inline: true }, { name: 'Custom Avatar', value: branding.custom_bot_avatar_url ? '✅ Set' : '*Not set*', inline: true },
{ name: 'Custom Handle', value: branding.custom_handle ? `aethex.dev/${branding.custom_handle}` : '*Not claimed*', inline: true }, { name: 'Custom Handle', value: branding.custom_handle ? `aethex.bot/${branding.custom_handle}` : '*Not claimed*', inline: true },
{ name: 'Landing Page', value: branding.landing_title ? '✅ Configured' : '*Not set*', inline: true } { name: 'Landing Page', value: branding.landing_title ? '✅ Configured' : '*Not set*', inline: true }
) )
.setFooter({ text: 'Use /branding tiers to see upgrade options' }) .setFooter({ text: 'Use /branding tiers to see upgrade options' })
@ -146,11 +146,11 @@ module.exports = {
.addComponents( .addComponents(
new ButtonBuilder() new ButtonBuilder()
.setLabel('Manage on Dashboard') .setLabel('Manage on Dashboard')
.setURL(`https://bot.aethex.dev/dashboard?guild=${guildId}&page=branding`) .setURL(`https://aethex.bot/dashboard?guild=${guildId}&page=branding`)
.setStyle(ButtonStyle.Link), .setStyle(ButtonStyle.Link),
new ButtonBuilder() new ButtonBuilder()
.setLabel('Upgrade Tier') .setLabel('Upgrade Tier')
.setURL('https://bot.aethex.dev/pricing#branding') .setURL('https://aethex.bot/pricing#branding')
.setStyle(ButtonStyle.Link) .setStyle(ButtonStyle.Link)
); );
@ -176,7 +176,7 @@ module.exports = {
}, },
{ {
name: '⭐ Pro - $35/mo', name: '⭐ Pro - $35/mo',
value: '• Everything in Basic\n• Custom bot avatar\n• Custom URL handle\n• Landing page\n• `aethex.dev/your-name`', value: '• Everything in Basic\n• Custom bot avatar\n• Custom URL handle\n• Landing page\n• `aethex.bot/your-name`',
inline: true inline: true
}, },
{ {
@ -191,7 +191,7 @@ module.exports = {
.addComponents( .addComponents(
new ButtonBuilder() new ButtonBuilder()
.setLabel('Subscribe Now') .setLabel('Subscribe Now')
.setURL('https://bot.aethex.dev/pricing#branding') .setURL('https://aethex.bot/pricing#branding')
.setStyle(ButtonStyle.Link) .setStyle(ButtonStyle.Link)
.setEmoji('💳') .setEmoji('💳')
); );
@ -327,7 +327,7 @@ module.exports = {
new EmbedBuilder() new EmbedBuilder()
.setColor('#22c55e') .setColor('#22c55e')
.setTitle('✅ Handle Claimed!') .setTitle('✅ Handle Claimed!')
.setDescription(`Your community page is now live at:\n\n🔗 **https://bot.aethex.dev/${result.handle}**`) .setDescription(`Your community page is now live at:\n\n🔗 **https://aethex.bot/${result.handle}**`)
.addFields( .addFields(
{ name: 'Configure Your Page', value: 'Use `/branding landing` to customize your page content.' } { name: 'Configure Your Page', value: 'Use `/branding landing` to customize your page content.' }
) )
@ -380,7 +380,7 @@ module.exports = {
new EmbedBuilder() new EmbedBuilder()
.setColor('#22c55e') .setColor('#22c55e')
.setTitle('✅ Landing Page Updated') .setTitle('✅ Landing Page Updated')
.setDescription(`View your page at:\n🔗 **https://bot.aethex.dev/${branding.custom_handle}**`) .setDescription(`View your page at:\n🔗 **https://aethex.bot/${branding.custom_handle}**`)
.addFields( .addFields(
Object.entries(updates).map(([key, value]) => ({ Object.entries(updates).map(([key, value]) => ({
name: key.replace('landing_', '').replace('_', ' '), name: key.replace('landing_', '').replace('_', ' '),

View file

@ -86,7 +86,7 @@ async function sendPostToDiscord(post, authorInfo = null) {
const rawAvatar = author?.avatar_url || ""; const rawAvatar = author?.avatar_url || "";
const authorAvatar = rawAvatar.startsWith("http://") || rawAvatar.startsWith("https://") const authorAvatar = rawAvatar.startsWith("http://") || rawAvatar.startsWith("https://")
? rawAvatar ? rawAvatar
: "https://aethex.dev/logo.png"; : "https://aethex.bot/logo.png";
const arm = post.arm_affiliation || "labs"; const arm = post.arm_affiliation || "labs";
const embed = new EmbedBuilder() const embed = new EmbedBuilder()
@ -94,13 +94,13 @@ async function sendPostToDiscord(post, authorInfo = null) {
.setAuthor({ .setAuthor({
name: `${getArmEmoji(arm)} ${authorName}`, name: `${getArmEmoji(arm)} ${authorName}`,
iconURL: authorAvatar, iconURL: authorAvatar,
url: `https://aethex.dev/creators/${author?.username || post.author_id}`, url: `https://aethex.bot/creators/${author?.username || post.author_id}`,
}) })
.setDescription(content.text || post.title || "New post") .setDescription(content.text || post.title || "New post")
.setTimestamp(post.created_at ? new Date(post.created_at) : new Date()) .setTimestamp(post.created_at ? new Date(post.created_at) : new Date())
.setFooter({ .setFooter({
text: `Posted from AeThex • ${arm.charAt(0).toUpperCase() + arm.slice(1)}`, text: `Posted from AeThex • ${arm.charAt(0).toUpperCase() + arm.slice(1)}`,
iconURL: "https://aethex.dev/logo.png", iconURL: "https://aethex.bot/logo.png",
}); });
if (content.mediaUrl) { if (content.mediaUrl) {

View file

@ -12,7 +12,7 @@ CREATE TABLE IF NOT EXISTS server_branding (
custom_footer_text VARCHAR(200), custom_footer_text VARCHAR(200),
custom_embed_color VARCHAR(10), custom_embed_color VARCHAR(10),
-- Custom Handle (aethex.dev/{handle}) -- Custom Handle (aethex.bot/{handle})
custom_handle VARCHAR(50) UNIQUE, custom_handle VARCHAR(50) UNIQUE,
handle_verified BOOLEAN DEFAULT false, handle_verified BOOLEAN DEFAULT false,
@ -98,5 +98,5 @@ ON CONFLICT (handle) DO NOTHING;
-- Enterprise ($75/mo): + Analytics, priority support, custom domain support -- Enterprise ($75/mo): + Analytics, priority support, custom domain support
COMMENT ON TABLE server_branding IS 'White-label branding configuration for servers'; COMMENT ON TABLE server_branding IS 'White-label branding configuration for servers';
COMMENT ON COLUMN server_branding.custom_handle IS 'Custom URL handle at aethex.dev/{handle}'; COMMENT ON COLUMN server_branding.custom_handle IS 'Custom URL handle at aethex.bot/{handle}';
COMMENT ON COLUMN server_branding.tier IS 'Branding tier: free, basic, pro, enterprise'; COMMENT ON COLUMN server_branding.tier IS 'Branding tier: free, basic, pro, enterprise';

View file

@ -8,20 +8,20 @@
<meta name="keywords" content="Discord bot commands, slash commands, moderation commands, leveling commands, fun commands, economy commands, admin commands, AI commands"> <meta name="keywords" content="Discord bot commands, slash commands, moderation commands, leveling commands, fun commands, economy commands, admin commands, AI commands">
<meta name="author" content="AeThex"> <meta name="author" content="AeThex">
<meta name="robots" content="index, follow"> <meta name="robots" content="index, follow">
<link rel="canonical" href="https://bot.aethex.dev/commands"> <link rel="canonical" href="https://aethex.bot/commands">
<meta property="og:type" content="website"> <meta property="og:type" content="website">
<meta property="og:url" content="https://bot.aethex.dev/commands"> <meta property="og:url" content="https://aethex.bot/commands">
<meta property="og:title" content="Commands | AeThex Warden - Discord Bot"> <meta property="og:title" content="Commands | AeThex Warden - Discord Bot">
<meta property="og:description" content="Complete list of all 75+ Warden Discord bot commands organized by category. Leveling, moderation, fun, economy, AI, and admin commands."> <meta property="og:description" content="Complete list of all 75+ Warden Discord bot commands organized by category. Leveling, moderation, fun, economy, AI, and admin commands.">
<meta property="og:image" content="https://bot.aethex.dev/og-image.png"> <meta property="og:image" content="https://aethex.bot/og-image.png">
<meta property="og:site_name" content="AeThex Warden"> <meta property="og:site_name" content="AeThex Warden">
<meta name="twitter:card" content="summary_large_image"> <meta name="twitter:card" content="summary_large_image">
<meta name="twitter:url" content="https://bot.aethex.dev/commands"> <meta name="twitter:url" content="https://aethex.bot/commands">
<meta name="twitter:title" content="Commands | AeThex Warden - Discord Bot"> <meta name="twitter:title" content="Commands | AeThex Warden - Discord Bot">
<meta name="twitter:description" content="Complete list of all 75+ Warden Discord bot commands organized by category."> <meta name="twitter:description" content="Complete list of all 75+ Warden Discord bot commands organized by category.">
<meta name="twitter:image" content="https://bot.aethex.dev/og-image.png"> <meta name="twitter:image" content="https://aethex.bot/og-image.png">
<meta name="theme-color" content="#6366f1"> <meta name="theme-color" content="#6366f1">
<link rel="icon" href="/logo.png" type="image/png"> <link rel="icon" href="/logo.png" type="image/png">

View file

@ -451,7 +451,7 @@
// Name and handle // Name and handle
document.getElementById('name').textContent = data.title || data.name; document.getElementById('name').textContent = data.title || data.name;
document.getElementById('handle').textContent = `aethex.dev/${data.handle}`; document.getElementById('handle').textContent = `aethex.bot/${data.handle}`;
// Tier badge // Tier badge
if (data.tier === 'pro' || data.tier === 'enterprise') { if (data.tier === 'pro' || data.tier === 'enterprise') {

View file

@ -2552,7 +2552,7 @@
<div class="form-group" style="margin-bottom:1rem"> <div class="form-group" style="margin-bottom:1rem">
<label class="form-label">Your Handle</label> <label class="form-label">Your Handle</label>
<div style="display:flex;gap:0.5rem;align-items:center"> <div style="display:flex;gap:0.5rem;align-items:center">
<span style="color:var(--muted)">aethex.dev/</span> <span style="color:var(--muted)">aethex.bot/</span>
<input type="text" class="form-input" id="brandingHandle" placeholder="your-community" maxlength="50" style="flex:1"> <input type="text" class="form-input" id="brandingHandle" placeholder="your-community" maxlength="50" style="flex:1">
</div> </div>
<small style="color:var(--muted)">Alphanumeric and hyphens only, 3-50 characters</small> <small style="color:var(--muted)">Alphanumeric and hyphens only, 3-50 characters</small>
@ -2571,7 +2571,7 @@
</div> </div>
<div class="card-body"> <div class="card-body">
<ul style="list-style:none;padding:0"> <ul style="list-style:none;padding:0">
<li style="padding:0.5rem 0;border-bottom:1px solid var(--border)">✅ Custom URL: <code>aethex.dev/your-handle</code></li> <li style="padding:0.5rem 0;border-bottom:1px solid var(--border)">✅ Custom URL: <code>aethex.bot/your-handle</code></li>
<li style="padding:0.5rem 0;border-bottom:1px solid var(--border)">✅ Community landing page</li> <li style="padding:0.5rem 0;border-bottom:1px solid var(--border)">✅ Community landing page</li>
<li style="padding:0.5rem 0;border-bottom:1px solid var(--border)">✅ SEO-friendly presence</li> <li style="padding:0.5rem 0;border-bottom:1px solid var(--border)">✅ SEO-friendly presence</li>
<li style="padding:0.5rem 0">✅ Analytics (Enterprise)</li> <li style="padding:0.5rem 0">✅ Analytics (Enterprise)</li>
@ -5052,7 +5052,7 @@
// Handle // Handle
document.getElementById('brandingHandle').value = data.custom_handle || ''; document.getElementById('brandingHandle').value = data.custom_handle || '';
if (data.custom_handle) { if (data.custom_handle) {
document.getElementById('handleStatusText').textContent = '✅ Handle claimed: aethex.dev/' + data.custom_handle; document.getElementById('handleStatusText').textContent = '✅ Handle claimed: aethex.bot/' + data.custom_handle;
document.getElementById('handleStatus').style.background = 'rgba(16,185,129,0.2)'; document.getElementById('handleStatus').style.background = 'rgba(16,185,129,0.2)';
document.getElementById('viewLandingBtn').href = '/' + data.custom_handle; document.getElementById('viewLandingBtn').href = '/' + data.custom_handle;
document.getElementById('viewLandingBtn').style.display = 'inline-block'; document.getElementById('viewLandingBtn').style.display = 'inline-block';

View file

@ -8,20 +8,20 @@
<meta name="keywords" content="Discord bot features, XP system, leveling bot, Discord moderation, economy bot, achievement system, quest system, Discord games"> <meta name="keywords" content="Discord bot features, XP system, leveling bot, Discord moderation, economy bot, achievement system, quest system, Discord games">
<meta name="author" content="AeThex"> <meta name="author" content="AeThex">
<meta name="robots" content="index, follow"> <meta name="robots" content="index, follow">
<link rel="canonical" href="https://bot.aethex.dev/features"> <link rel="canonical" href="https://aethex.bot/features">
<meta property="og:type" content="website"> <meta property="og:type" content="website">
<meta property="og:url" content="https://bot.aethex.dev/features"> <meta property="og:url" content="https://aethex.bot/features">
<meta property="og:title" content="Features | AeThex Warden - Discord Bot"> <meta property="og:title" content="Features | AeThex Warden - Discord Bot">
<meta property="og:description" content="Explore all features of Warden - XP systems, moderation, games, economy, achievements, quests, and more for your Discord community."> <meta property="og:description" content="Explore all features of Warden - XP systems, moderation, games, economy, achievements, quests, and more for your Discord community.">
<meta property="og:image" content="https://bot.aethex.dev/og-image.png"> <meta property="og:image" content="https://aethex.bot/og-image.png">
<meta property="og:site_name" content="AeThex Warden"> <meta property="og:site_name" content="AeThex Warden">
<meta name="twitter:card" content="summary_large_image"> <meta name="twitter:card" content="summary_large_image">
<meta name="twitter:url" content="https://bot.aethex.dev/features"> <meta name="twitter:url" content="https://aethex.bot/features">
<meta name="twitter:title" content="Features | AeThex Warden - Discord Bot"> <meta name="twitter:title" content="Features | AeThex Warden - Discord Bot">
<meta name="twitter:description" content="Explore all features of Warden - XP systems, moderation, games, economy, achievements, quests, and more."> <meta name="twitter:description" content="Explore all features of Warden - XP systems, moderation, games, economy, achievements, quests, and more.">
<meta name="twitter:image" content="https://bot.aethex.dev/og-image.png"> <meta name="twitter:image" content="https://aethex.bot/og-image.png">
<meta name="theme-color" content="#6366f1"> <meta name="theme-color" content="#6366f1">
<link rel="icon" href="/logo.png" type="image/png"> <link rel="icon" href="/logo.png" type="image/png">

View file

@ -8,20 +8,20 @@
<meta name="keywords" content="Discord federation, server protection, shared ban list, Discord security, anti-raid, global bans, Discord moderation network"> <meta name="keywords" content="Discord federation, server protection, shared ban list, Discord security, anti-raid, global bans, Discord moderation network">
<meta name="author" content="AeThex"> <meta name="author" content="AeThex">
<meta name="robots" content="index, follow"> <meta name="robots" content="index, follow">
<link rel="canonical" href="https://bot.aethex.dev/federation"> <link rel="canonical" href="https://aethex.bot/federation">
<meta property="og:type" content="website"> <meta property="og:type" content="website">
<meta property="og:url" content="https://bot.aethex.dev/federation"> <meta property="og:url" content="https://aethex.bot/federation">
<meta property="og:title" content="The Federation - AeThex | Warden"> <meta property="og:title" content="The Federation - AeThex | Warden">
<meta property="og:description" content="A network of protected Discord servers. When one server bans a bad actor, every federation member is protected. Ban one, ban all."> <meta property="og:description" content="A network of protected Discord servers. When one server bans a bad actor, every federation member is protected. Ban one, ban all.">
<meta property="og:image" content="https://bot.aethex.dev/og-image.png"> <meta property="og:image" content="https://aethex.bot/og-image.png">
<meta property="og:site_name" content="AeThex Warden"> <meta property="og:site_name" content="AeThex Warden">
<meta name="twitter:card" content="summary_large_image"> <meta name="twitter:card" content="summary_large_image">
<meta name="twitter:url" content="https://bot.aethex.dev/federation"> <meta name="twitter:url" content="https://aethex.bot/federation">
<meta name="twitter:title" content="The Federation - AeThex | Warden"> <meta name="twitter:title" content="The Federation - AeThex | Warden">
<meta name="twitter:description" content="A network of protected Discord servers. When one server bans a bad actor, every federation member is protected."> <meta name="twitter:description" content="A network of protected Discord servers. When one server bans a bad actor, every federation member is protected.">
<meta name="twitter:image" content="https://bot.aethex.dev/og-image.png"> <meta name="twitter:image" content="https://aethex.bot/og-image.png">
<meta name="theme-color" content="#6366f1"> <meta name="theme-color" content="#6366f1">
<link rel="icon" href="/logo.png" type="image/png"> <link rel="icon" href="/logo.png" type="image/png">

View file

@ -8,21 +8,21 @@
<meta name="keywords" content="Discord bot, XP leveling, Discord moderation, Discord security, anti-nuke, federation, cross-server, AeThex, Warden, community bot"> <meta name="keywords" content="Discord bot, XP leveling, Discord moderation, Discord security, anti-nuke, federation, cross-server, AeThex, Warden, community bot">
<meta name="author" content="AeThex"> <meta name="author" content="AeThex">
<meta name="robots" content="index, follow"> <meta name="robots" content="index, follow">
<link rel="canonical" href="https://bot.aethex.dev/"> <link rel="canonical" href="https://aethex.bot/">
<meta property="og:type" content="website"> <meta property="og:type" content="website">
<meta property="og:url" content="https://bot.aethex.dev/"> <meta property="og:url" content="https://aethex.bot/">
<meta property="og:title" content="AeThex | Warden - Guardian of the AeThex Ecosystem"> <meta property="og:title" content="AeThex | Warden - Guardian of the AeThex Ecosystem">
<meta property="og:description" content="The unified Discord bot that connects the entire AeThex network. Cross-server XP, unified profiles, federation sync, and enterprise security. Free forever."> <meta property="og:description" content="The unified Discord bot that connects the entire AeThex network. Cross-server XP, unified profiles, federation sync, and enterprise security. Free forever.">
<meta property="og:image" content="https://bot.aethex.dev/og-image.png"> <meta property="og:image" content="https://aethex.bot/og-image.png">
<meta property="og:site_name" content="AeThex Warden"> <meta property="og:site_name" content="AeThex Warden">
<meta property="og:locale" content="en_US"> <meta property="og:locale" content="en_US">
<meta name="twitter:card" content="summary_large_image"> <meta name="twitter:card" content="summary_large_image">
<meta name="twitter:url" content="https://bot.aethex.dev/"> <meta name="twitter:url" content="https://aethex.bot/">
<meta name="twitter:title" content="AeThex | Warden - Guardian of the AeThex Ecosystem"> <meta name="twitter:title" content="AeThex | Warden - Guardian of the AeThex Ecosystem">
<meta name="twitter:description" content="The unified Discord bot that connects the entire AeThex network. Cross-server XP, unified profiles, federation sync, and enterprise security. Free forever."> <meta name="twitter:description" content="The unified Discord bot that connects the entire AeThex network. Cross-server XP, unified profiles, federation sync, and enterprise security. Free forever.">
<meta name="twitter:image" content="https://bot.aethex.dev/og-image.png"> <meta name="twitter:image" content="https://aethex.bot/og-image.png">
<meta name="theme-color" content="#6366f1"> <meta name="theme-color" content="#6366f1">
<link rel="icon" href="/logo.png" type="image/png"> <link rel="icon" href="/logo.png" type="image/png">
@ -45,7 +45,7 @@
"name": "AeThex", "name": "AeThex",
"url": "https://aethex.studio" "url": "https://aethex.studio"
}, },
"url": "https://bot.aethex.dev", "url": "https://aethex.bot",
"aggregateRating": { "aggregateRating": {
"@type": "AggregateRating", "@type": "AggregateRating",
"ratingValue": "5", "ratingValue": "5",

View file

@ -8,20 +8,20 @@
<meta name="keywords" content="Discord bot pricing, free Discord bot, premium Discord bot, federation pricing, Discord moderation pricing"> <meta name="keywords" content="Discord bot pricing, free Discord bot, premium Discord bot, federation pricing, Discord moderation pricing">
<meta name="author" content="AeThex"> <meta name="author" content="AeThex">
<meta name="robots" content="index, follow"> <meta name="robots" content="index, follow">
<link rel="canonical" href="https://bot.aethex.dev/pricing"> <link rel="canonical" href="https://aethex.bot/pricing">
<meta property="og:type" content="website"> <meta property="og:type" content="website">
<meta property="og:url" content="https://bot.aethex.dev/pricing"> <meta property="og:url" content="https://aethex.bot/pricing">
<meta property="og:title" content="Pricing - AeThex | Warden - Discord Bot"> <meta property="og:title" content="Pricing - AeThex | Warden - Discord Bot">
<meta property="og:description" content="Warden is free forever for all core features. Join the Federation for advanced protection."> <meta property="og:description" content="Warden is free forever for all core features. Join the Federation for advanced protection.">
<meta property="og:image" content="https://bot.aethex.dev/og-image.png"> <meta property="og:image" content="https://aethex.bot/og-image.png">
<meta property="og:site_name" content="AeThex Warden"> <meta property="og:site_name" content="AeThex Warden">
<meta name="twitter:card" content="summary_large_image"> <meta name="twitter:card" content="summary_large_image">
<meta name="twitter:url" content="https://bot.aethex.dev/pricing"> <meta name="twitter:url" content="https://aethex.bot/pricing">
<meta name="twitter:title" content="Pricing - AeThex | Warden - Discord Bot"> <meta name="twitter:title" content="Pricing - AeThex | Warden - Discord Bot">
<meta name="twitter:description" content="Warden is free forever for all core features. Join the Federation for advanced protection."> <meta name="twitter:description" content="Warden is free forever for all core features. Join the Federation for advanced protection.">
<meta name="twitter:image" content="https://bot.aethex.dev/og-image.png"> <meta name="twitter:image" content="https://aethex.bot/og-image.png">
<meta name="theme-color" content="#6366f1"> <meta name="theme-color" content="#6366f1">
<link rel="icon" href="/logo.png" type="image/png"> <link rel="icon" href="/logo.png" type="image/png">

View file

@ -4,4 +4,4 @@ Disallow: /dashboard
Disallow: /auth/ Disallow: /auth/
Disallow: /api/ Disallow: /api/
Sitemap: https://bot.aethex.dev/sitemap.xml Sitemap: https://aethex.bot/sitemap.xml

View file

@ -1,31 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url> <url>
<loc>https://bot.aethex.dev/</loc> <loc>https://aethex.bot/</loc>
<lastmod>2025-01-01</lastmod> <lastmod>2025-01-01</lastmod>
<changefreq>weekly</changefreq> <changefreq>weekly</changefreq>
<priority>1.0</priority> <priority>1.0</priority>
</url> </url>
<url> <url>
<loc>https://bot.aethex.dev/features</loc> <loc>https://aethex.bot/features</loc>
<lastmod>2025-01-01</lastmod> <lastmod>2025-01-01</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.9</priority> <priority>0.9</priority>
</url> </url>
<url> <url>
<loc>https://bot.aethex.dev/commands</loc> <loc>https://aethex.bot/commands</loc>
<lastmod>2025-01-01</lastmod> <lastmod>2025-01-01</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.9</priority> <priority>0.9</priority>
</url> </url>
<url> <url>
<loc>https://bot.aethex.dev/pricing</loc> <loc>https://aethex.bot/pricing</loc>
<lastmod>2025-01-01</lastmod> <lastmod>2025-01-01</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.8</priority> <priority>0.8</priority>
</url> </url>
<url> <url>
<loc>https://bot.aethex.dev/federation</loc> <loc>https://aethex.bot/federation</loc>
<lastmod>2025-01-01</lastmod> <lastmod>2025-01-01</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.8</priority> <priority>0.8</priority>

View file

@ -18,7 +18,7 @@ function createWebServer(discordClient, supabase, options = {}) {
const DISCORD_CLIENT_SECRET = process.env.DISCORD_CLIENT_SECRET; const DISCORD_CLIENT_SECRET = process.env.DISCORD_CLIENT_SECRET;
const SESSION_SECRET = process.env.SESSION_SECRET || crypto.randomBytes(32).toString('hex'); const SESSION_SECRET = process.env.SESSION_SECRET || crypto.randomBytes(32).toString('hex');
// Production URL for OAuth // Production URL for OAuth
const BASE_URL = process.env.BASE_URL || 'https://bot.aethex.dev'; const BASE_URL = process.env.BASE_URL || 'https://aethex.bot';
app.use(cors({ app.use(cors({
origin: true, origin: true,
@ -363,7 +363,7 @@ function createWebServer(discordClient, supabase, options = {}) {
// Route for specific user's profile // Route for specific user's profile
app.get('/api/profile/:userId', (req, res) => handleProfileRequest(req, res, req.params.userId)); app.get('/api/profile/:userId', (req, res) => handleProfileRequest(req, res, req.params.userId));
// Verification callback endpoint - called by aethex.dev when user verifies // Verification callback endpoint - called by aethex.bot when user verifies
app.post('/api/verify-callback', async (req, res) => { app.post('/api/verify-callback', async (req, res) => {
if (!supabase) { if (!supabase) {
return res.status(503).json({ error: 'Database not available' }); return res.status(503).json({ error: 'Database not available' });
@ -371,7 +371,7 @@ function createWebServer(discordClient, supabase, options = {}) {
const { discord_id, user_id, secret } = req.body; const { discord_id, user_id, secret } = req.body;
// Verify the callback secret (should match what aethex.dev uses) // Verify the callback secret (should match what aethex.bot uses)
const expectedSecret = process.env.VERIFY_CALLBACK_SECRET; const expectedSecret = process.env.VERIFY_CALLBACK_SECRET;
if (expectedSecret && secret !== expectedSecret) { if (expectedSecret && secret !== expectedSecret) {
return res.status(401).json({ error: 'Invalid callback secret' }); return res.status(401).json({ error: 'Invalid callback secret' });
@ -404,7 +404,7 @@ function createWebServer(discordClient, supabase, options = {}) {
const role = guild.roles.cache.get(config.verified_role_id); const role = guild.roles.cache.get(config.verified_role_id);
if (!role) continue; if (!role) continue;
await member.roles.add(role, 'Account verified via aethex.dev'); await member.roles.add(role, 'Account verified via aethex.bot');
rolesAssigned++; rolesAssigned++;
console.log(`[Verify] Assigned verified role to ${member.user.tag} in ${guild.name}`); console.log(`[Verify] Assigned verified role to ${member.user.tag} in ${guild.name}`);
} catch (err) { } catch (err) {
@ -456,7 +456,7 @@ function createWebServer(discordClient, supabase, options = {}) {
} }
}); });
// Verification success endpoint - called by aethex.dev when verification completes // Verification success endpoint - called by aethex.bot when verification completes
app.post('/api/verify-success', async (req, res) => { app.post('/api/verify-success', async (req, res) => {
if (!supabase) { if (!supabase) {
return res.status(503).json({ error: 'Database not available' }); return res.status(503).json({ error: 'Database not available' });
@ -513,7 +513,7 @@ function createWebServer(discordClient, supabase, options = {}) {
if (!role) continue; if (!role) continue;
if (!member.roles.cache.has(role.id)) { if (!member.roles.cache.has(role.id)) {
await member.roles.add(role, 'Account verified via aethex.dev'); await member.roles.add(role, 'Account verified via aethex.bot');
rolesAssigned++; rolesAssigned++;
assignedIn.push(guild.name); assignedIn.push(guild.name);
console.log(`[Verify-Success] Assigned verified role to ${member.user.tag} in ${guild.name}`); console.log(`[Verify-Success] Assigned verified role to ${member.user.tag} in ${guild.name}`);