AstroBot Docs
Everything you need to set up, configure, and get the most out of AstroBot — from your first invite to advanced dashboard settings.
Introduction
AstroBot is an all-in-one Discord bot covering moderation, an in-server economy (AstroCoins), leveling, tickets, giveaways, and a full web dashboard for configuration — no command memorization required.
This documentation covers everything from adding the bot to your server, to configuring advanced features through the dashboard, to understanding premium Gold Tiers.
Installation
Getting AstroBot into your server takes less than a minute.
Click Invite
Go to the Invite page and select the server you want to add AstroBot to.
Authorize permissions
Discord will ask you to confirm the requested permissions — see Permissions below for details.
Run your first command
Try /help in your server to confirm AstroBot is online and responding.
Open the dashboard
Visit the Dashboard to configure moderation, economy, and other modules visually.
Permissions
AstroBot requests a standard set of permissions needed for its core features. You can review and adjust these at any time in Discord's Server Settings.
| Permission | Used for |
|---|---|
| Manage Roles | Autoroles, leveling role rewards, mute/timeout actions |
| Manage Channels | Ticket system channel creation |
| Kick / Ban Members | Moderation commands |
| Manage Messages | Purge, auto-moderation, embed builder |
| Send Messages / Embeds | Greetings, giveaways, announcements |
Moderation
Core moderation commands are available to anyone with the appropriate Discord permissions — no extra setup required.
# Example commands
/ban user:@member reason:"spam"
/timeout user:@member duration:10m
/purge amount:50
/warn user:@member reason:"rule 3"Full auto-moderation rules (banned words, spam detection, link filters) can be configured from the dashboard.
AstroCoins Economy
AstroCoins is AstroBot's built-in virtual currency system, letting members earn, spend, and transfer coins within your server.
/daily— claim a free daily coin reward/balance— check your AstroCoins balance/transfer— send coins to another member (captcha required)/leaderboard— view the top earners in your server
AstroCoins API
Want your own Discord bot to interact with the AstroCoins system — transferring between users, reading balances, or managing a per-key blacklist? There are ready-made client libraries for Python and Node.js that let you do this with minimal effort, without needing any direct database connection.
1. Create an API Key and a Balance Wallet
Go to the API Keys page, enter a name for the key (e.g. your bot's name), and click "Create Key". The key is shown to you only once — save it immediately.
Then open the My Wallet page and generate your ASTROCOINS_BALANCE_WALLET code. Transfers made through the library are withdrawn from the balance of the account that generated this code. Regenerating the code invalidates the old one immediately.
2. Install the library
# In your terminal
pip install astrocoins# In your terminal
npm install astrocoins3. Use it in your bot
# Set the key and the wallet code as environment variables, or pass them to the Client
export ASTROCOINS_API_KEY="asc_xxxxxxx"
export ASTROCOINS_BALANCE_WALLET="asw_xxxxxxx"
# Python code in your bot
from astrocoins import AstroCoinsClient
coins = AstroCoinsClient() # automatically reads ASTROCOINS_API_KEY and ASTROCOINS_BALANCE_WALLET
# Read balance
balance = coins.get_balance(user_id=123456789012345678)
# Transfer coins from your wallet account to a user
result = coins.transfer(to_user_id=987654321098765432, amount=25, reason="Trade")
# Blacklist a user — they can no longer receive/lose coins through this key
coins.blacklist_user(user_id=123456789012345678, reason="Chargeback abuse")
# Check / remove a blacklist entry
coins.is_blacklisted(user_id=123456789012345678)
coins.unblacklist_user(user_id=123456789012345678)// Set the key and the wallet code as environment variables, or pass them to the Client
export ASTROCOINS_API_KEY="asc_xxxxxxx"
export ASTROCOINS_BALANCE_WALLET="asw_xxxxxxx"
// Node.js code in your bot
const { AstroCoinsClient } = require("astrocoins");
// or: import { AstroCoinsClient } from "astrocoins";
const coins = new AstroCoinsClient(); // automatically reads ASTROCOINS_API_KEY and ASTROCOINS_BALANCE_WALLET
// Read balance
const balance = await coins.getBalance(123456789012345678);
// Transfer coins from your wallet account to a user
const result = await coins.transfer(987654321098765432, 25, "Trade");
// Blacklist a user — they can no longer receive/lose coins through this key
await coins.blacklistUser(123456789012345678, "Chargeback abuse");
// Check / remove a blacklist entry
await coins.isBlacklisted(123456789012345678);
await coins.unblacklistUser(123456789012345678);Built-in transfer command (no code needed)
The library can register a ready-made transfer command. It sends an embed with Accept and Reject buttons that only the user who ran the command can press. The transfer is executed only after Accept.
pip install discord.py
coins = AstroCoinsClient()
coins.register_transfer_command(bot)
# slash version: await bot.tree.sync()npm install discord.js
const coins = new AstroCoinsClient();
coins.installTransferCommand(client, { prefix: "!" });
// slash version: register transferSlashCommand() from "astrocoins"Full example: a !balance command in a Discord bot
import discord
from discord.ext import commands
from astrocoins import AstroCoinsClient, AstroCoinsError
bot = commands.Bot(command_prefix="!", intents=discord.Intents.default())
coins = AstroCoinsClient()
@bot.command()
async def balance(ctx, member: discord.Member):
try:
bal = coins.get_balance(member.id)
await ctx.send(f"💰 {member.mention}: {bal} coins")
except AstroCoinsError as exc:
await ctx.send(f"❌ Error: {exc}")const { Client, GatewayIntentBits } = require("discord.js");
const { AstroCoinsClient, AstroCoinsError } = require("astrocoins");
const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent] });
const coins = new AstroCoinsClient();
client.on("messageCreate", async (msg) => {
if (!msg.content.startsWith("!balance")) return;
const member = msg.mentions.members.first() ?? msg.member;
try {
const bal = await coins.getBalance(member.id);
await msg.reply(`💰 ${member}: ${bal} coins`);
} catch (exc) {
if (exc instanceof AstroCoinsError) {
await msg.reply(`❌ Error: ${exc.message}`);
} else { throw exc; }
}
});Available methods
| Python | Node.js | Description |
|---|---|---|
get_balance(user_id) | getBalance(userId) | Returns the current balance of any user |
transfer(to_user_id, amount, reason="") | transfer(toUserId, amount, reason?) | Transfers coins from the wallet account (ASTROCOINS_BALANCE_WALLET) to the user. Fails if the recipient is blacklisted for this key, the amount isn't positive, the wallet balance is insufficient, or the daily limit is reached |
send_transfer_prompt(source, member, amount, reason="") | sendTransferPrompt(source, user, amount, reason?) | Sends the Accept / Reject confirmation embed and performs the transfer on Accept |
register_transfer_command(bot, name="transfer") | installTransferCommand(client, options?) | Registers the ready-made transfer command |
blacklist_user(user_id, reason="") | blacklistUser(userId, reason?) | Blacklists a user for your bot only — they can no longer receive transfers through this key until removed |
unblacklist_user(user_id) | unblacklistUser(userId) | Removes a user from this key's blacklist |
is_blacklisted(user_id) | isBlacklisted(userId) | Returns whether the user is currently blacklisted for this key |
list_blacklist() | listBlacklist() | Returns every blacklist entry (user ID, reason, timestamp) for this key |
/balance//transfer economy inside your server.Leveling
Members automatically earn XP from chatting, leveling up over time. Configure XP rates, level-up messages, and role rewards from the dashboard.
/rank— view your current level and XP/leaderboard-xp— view the server's top-ranked members
Tickets
Set up a support ticket system so members can privately reach your staff team. Configure ticket categories, staff roles, and welcome messages from the dashboard's Tickets module.
Giveaways
Run giveaways directly from Discord or the dashboard, with customizable duration, winner count, and role requirements.
/giveaway start duration:1h winners:1 prize:"Nitro"Web Dashboard
The dashboard at /servers gives you a visual way to configure every AstroBot module — no slash commands required. Log in with Discord, select your server, and start configuring.
Available modules include moderation logs, autoroles, greetings, auto-replies, an embed builder, and message scheduling.
Autoroles & Greetings
Automatically assign roles to new members and send a custom welcome message (with optional welcome card image) when someone joins your server. Both are configured entirely through the dashboard.
Embed Builder
Design and send rich embeds — announcements, rules, or info panels — using the dashboard's drag-and-drop embed builder, and save templates for reuse.
Redeeming Codes
Received a gift code or promo code? Head to the Redeem page, paste your code, and it will be applied to your account automatically.
FAQ
Is AstroBot free?
Yes. The core bot — moderation, economy, leveling, tickets, and more — is free forever. Gold Tiers add optional extras on top.
Why isn't AstroBot responding to commands?
Check that AstroBot has the required permissions in that channel, and that its role sits high enough in your server's role list.
Can I use AstroBot in multiple servers?
Yes, there's no limit on the number of servers you can add AstroBot to.
Get Help
Still stuck? Reach out through our official support server, or use the dashboard's /feedback-bot command to send feedback directly to our team.