TickAtlas

Use Case

Discord Trading Bot

Slash commands for instant indicator lookups, rich embeds with market summaries, and automated channel alerts — all powered by real-time API data.

The Challenge

Trading communities on Discord want instant market data without leaving the app. Members ask "what is the RSI on gold?" dozens of times a day. You want to build a bot with slash commands like /rsi, /price, and /summary — but you need a reliable data source that responds fast enough for interactive use, returns structured data you can format into Discord embeds, and does not require you to maintain your own indicator calculation engine.

How TickAtlas Solves It

Slash Command Data

User types /rsi XAUUSD H1 and your bot gets the answer from /v1/indicator in under 100ms. Format into a rich embed.

Rich Embed Formatting

JSON responses map naturally to Discord embed fields: indicator name, value, timeframe, signal — all structured for display.

Channel Alerts

Background task polls /v1/screener. When conditions are met (RSI > 70, MACD crossover), post an alert embed to #signals.

Daily Market Brief

Schedule a daily /v1/summary post to #market-analysis with AI-generated bias, confidence, and key levels.

Key Endpoints

Discord Bot Architecture

architecture
┌─────────────────────┐     ┌──────────────────────┐
  Discord Server  TickAtlas API

  #general           │     │  /v1/indicator       │
  /rsi XAUUSD H1  /v1/summary
  /v1/screener
  #signals           │     │  /v1/heatmap         │
  (auto alerts)      │     └──────────▲───────────┘

  #market-analysis   │                │
  (daily brief)      │                │
└──────────┬──────────┘


┌──────────────────────┐
   Discord.js Bot     │───────────────┘

  Slash Commands  /rsi GET /v1/indicator Embed
  Scheduled Tasks  5min GET /v1/screener #signals
  Cron Jobs  8AM GET /v1/summary #market
└──────────────────────┘

Code Example

javascript
const { Client, GatewayIntentBits, EmbedBuilder, SlashCommandBuilder } = require('discord.js');

const API_KEY = 'your_api_key';
const BASE = 'https://tickatlas.com/v1';

const client = new Client({ intents: [GatewayIntentBits.Guilds] });

// Register /rsi slash command
const rsiCommand = new SlashCommandBuilder()
  .setName('rsi')
  .setDescription('Get RSI for a symbol')
  .addStringOption(opt => opt.setName('symbol').setDescription('Symbol').setRequired(true))
  .addStringOption(opt => opt.setName('timeframe').setDescription('Timeframe').setRequired(false));

client.on('interactionCreate', async interaction => {
  if (!interaction.isChatInputCommand()) return;

  if (interaction.commandName === 'rsi') {
    const symbol = interaction.options.getString('symbol').toUpperCase();
    const timeframe = interaction.options.getString('timeframe') || 'H1';

    const resp = await fetch(
      `${BASE}/indicator?symbol=${symbol}&name=rsi&timeframe=${timeframe}`,
      { headers: { 'X-API-Key': API_KEY } }
    );
    const data = await resp.json();
    const rsi = data.data.value;

    const color = rsi > 70 ? 0xFF4444 : rsi < 30 ? 0x44FF44 : 0x3B82F6;
    const status = rsi > 70 ? 'Overbought' : rsi < 30 ? 'Oversold' : 'Neutral';

    const embed = new EmbedBuilder()
      .setTitle(`RSI — ${symbol}`)
      .setColor(color)
      .addFields(
        { name: 'Value', value: rsi.toFixed(1), inline: true },
        { name: 'Timeframe', value: timeframe, inline: true },
        { name: 'Signal', value: status, inline: true }
      )
      .setFooter({ text: 'Powered by TickAtlas API' })
      .setTimestamp();

    await interaction.reply({ embeds: [embed] });
  }
});

client.login('YOUR_DISCORD_TOKEN');

Recommended Plan

Starter Plan

$29/mo

10,000 requests/day covers a Discord server of hundreds of users with on-demand queries plus scheduled alerts. Scale to Pro for servers with 1,000+ active traders.

  • ✓ Instant slash command responses
  • ✓ Scheduled screener-based alerts
  • ✓ AI-powered daily market briefs
View all plans →

Launch Your Discord Bot

14-day free trial. Build and deploy a Discord trading bot in a single weekend.