A Discord Bible bot built with Deno - delivers scripture directly from your Discord client to your heart. An alternative to BibleBot.
- π Verse Lookup - Get any Bible verse by reference (e.g.,
/verse John 3:16) - π Daily Verse - Automatic daily verse delivery to configured channels
- π² Random Verse - Get a random Bible verse for inspiration
- π Multiple Versions - Support for 13 Bible versions (KJV, WEB, VULG, WLC, LXX, SBLGNT, etc.)
- β° Scheduled Posts - Configurable daily verse schedule with timezone support
- β‘ Fast & Lightweight - Built on Deno for modern, secure runtime
- π‘οΈ Anti-Raid - Automatically kicks accounts less than 2 days old
- Push your code to GitHub
- Go to Railway and create a new project
- Select Deploy from GitHub repo
- Choose your
primascripturarepository - Add environment variables:
PRIMASCRIPTURA_DISCORD_TOKEN- Your bot tokenPRIMASCRIPTURA_GUILD_ID(optional) - Your server ID for instant commands
- Deploy!
Railway will automatically detect the Dockerfile and deploy your bot.
# Install Deno
curl -fsSL https://deno.land/install.sh | sh
# Clone and run
git clone https://github.com/euxaristia/primascriptura.git
cd primascriptura
export PRIMASCRIPTURA_DISCORD_TOKEN=your_token_here
deno task startFor production, use a process manager like pm2 or create a systemd service.
- Deno installed
- A Discord Bot Token (from Discord Developer Portal)
- Go to Discord Developer Portal
- Click "New Application" and give it a name
- Go to the "Bot" section and click "Add Bot"
- Under "Token", click "Copy" to get your bot token
- Under "Privileged Gateway Intents", enable:
- Server Members Intent (optional, for welcome messages)
- Go to "OAuth2" β "URL Generator"
- Select scopes:
bot,applications.commands - Select permissions:
Send Messages,Use Slash Commands - Copy the generated URL and open it in your browser to invite the bot
cd primascripturaRequired:
export PRIMASCRIPTURA_DISCORD_TOKEN=your_bot_token_hereOptional:
export PRIMASCRIPTURA_CLIENT_ID=your_client_id_here # Auto-fetched if not provided
export PRIMASCRIPTURA_GUILD_ID=your_guild_id_here # For faster command testing
export DAILY_VERSE_SCHEDULE="0 8 * * *" # 8:00 AM daily
export DEFAULT_VERSION=KJV
export TIMEZONE=America/New_YorkOr run with inline variables:
PRIMASCRIPTURA_DISCORD_TOKEN=xxx PRIMASCRIPTURA_CLIENT_ID=xxx deno task startdeno task startSlash commands are automatically registered on startup.
Tip: For instant command registration during development, set PRIMASCRIPTURA_GUILD_ID to your
test server ID. Without it, global commands can take up to 1 hour to appear.
| Command | Description | Example |
|---|---|---|
/verse <reference> [version] |
Get a specific Bible verse | /verse John 3:16 ESV |
/daily |
Get the verse of the day | /daily |
/random [version] |
Get a random Bible verse | /random KJV |
/versions |
List available Bible versions | /versions |
/help |
Show help information | /help |
Supported formats:
John 3:16- Single versePsalm 23:1-6- Verse range1 John 1:9- Books with numbersSong of Solomon 2:10- Multi-word books
| Variable | Required | Default | Description |
|---|---|---|---|
PRIMASCRIPTURA_DISCORD_TOKEN |
β | - | Your Discord bot token |
PRIMASCRIPTURA_CLIENT_ID |
β | Auto-fetched | Your application's client ID |
PRIMASCRIPTURA_GUILD_ID |
β | - | Guild ID for testing (commands appear instantly) |
DAILY_VERSE_SCHEDULE |
β | 0 8 * * * |
Cron-like schedule for daily verses |
DEFAULT_VERSION |
β | ESV |
Default Bible version |
TIMEZONE |
β | America/New_York |
Timezone for daily verse schedule |
Modern English (bible-api.com):
- KJV - King James Version
- WEB - World English Bible
- BBE - Bible in Basic English
- DRB - Douay-Rheims Bible
- WMB - World Messianic Bible
- WMBBE - World Messianic Bible (British Edition)
Original Languages & Latin (bolls.life):
- VULG - Latin Vulgate
- WLC - Hebrew (Westminster Leningrad Codex)
- LXX - Greek Septuagint (Old Testament)
- SBLGNT - Greek New Testament
- BYZ - Byzantine Textform (Greek NT)
- MT - Masoretic Text (Hebrew)
- TR - Textus Receptus (Greek NT)
primascriptura/
βββ src/
β βββ main.ts # Bot entry point
β βββ deploy.ts # Command deployment script
β βββ commands/
β β βββ commands.ts # Slash command definitions
β βββ services/
β β βββ bible.ts # Bible API service
β β βββ scheduler.ts # Daily verse scheduler
β βββ utils/ # Utility functions
βββ deno.json # Deno configuration
βββ .env.example # Environment template
βββ README.md
deno task start # Start the bot (auto-deploys commands)
deno task dev # Start with auto-reload
deno task test # Run test suite- Add command definition in
src/commands/commands.tsβcreateCommandDefinitions() - Add command handler in
src/commands/commands.tsβcreateCommandHandlers() - Restart the bot - commands auto-deploy on startup
This bot uses bible-api.com - a free, no-authentication-required Bible API.
The bot requires these Discord permissions:
- Send Messages
- Use Slash Commands
- Embed Links (for better formatting)
- Kick Members (for anti-raid protection)
Contributions are welcome! Feel free to:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
MIT License - see LICENSE file for details
- Inspired by BibleBot
- Bible texts from bible-api.com
- Built with Deno and discord.js
- Testing: Use
PRIMASCRIPTURA_GUILD_IDduring development for instant command updates - Global Commands: Without
PRIMASCRIPTURA_GUILD_ID, commands can take up to an hour to appear - Daily Verses: The scheduler uses a rotating list of popular verses
- Rate Limits: The bot respects Discord's API rate limits
Commands not appearing?
- Run
deno task deploy - Check bot permissions in your server
- If using global commands, wait up to 1 hour
Bot not responding?
- Check console for error messages
- Verify
PRIMASCRIPTURA_DISCORD_TOKENis correct - Ensure bot has permission to send messages in the channel
Daily verses not sending?
- Check the schedule format (cron-like:
minute hour * * *) - Verify timezone is correct
- Check console logs for scheduler output
Scripture from your Discord client to your heart β€οΈ