Ony

A powerful, feature-rich Discord bot for your community

33 Commands Discord.js v14 MySQL
🛡️

Moderation

Full suite of moderation tools — ban, kick, mute, timeout, warn with auto-ban, and message clearing.

🎉

Giveaways

Create timed giveaways with multiple winners, reroll support, and per-server management.

👤

Profiles

Beautiful canvas profile cards with custom bio, badges, marriage status, and more.

📋

Logging

Granular log channels for staff actions, messages, voice events, and bot activity.

🎭

Fun

Ship users, play rock-paper-scissors, marry your server partner, and more.

⚙️

Customizable

Welcome messages, log channels, and per-server configuration to fit your community.

Command Categories

💬 General 10 commands
🎮 Fun 4 commands
🛡️ Moderation 10 commands
⚙️ Administrator 6 commands
👑 Owner 3 commands
1

Invite Ony

Use the /invite command or the invite link below to add Ony to your server. Make sure to grant all requested permissions for full functionality.

2

Set up Log Channels

Use /logs set to configure where Ony sends audit logs. Available channels: staff-logs, message-logs, bot-logs, voice-logs, invite-logs.

3

Configure Welcome Messages

Use /welcome set to choose a channel for greeting new members with a custom message.

4

You're ready!

All slash commands are immediately available. Type / in any channel to see the full command list, or browse the sidebar.

Required Permissions

Ony needs the following permissions to function correctly: Manage Webhooks, Manage Emojis, Manage Messages, Ban Members, Kick Members, Moderate Members, Send Messages, Embed Links, Read Message History.

FIX v0.2

/rps vs user — Pick choice hidden

  • Fixed a bug where the first player's pick was revealed publicly before the second player chose — now shows "Locked in!" instead
FIX v0.2

/rps vs user — Challenger buttons fix

  • Fixed a bug where the challenger never received their pick buttons when playing RPS vs another user
NEW v0.2

Voice Logs

  • Voice logs now fully functional — logs when a member joins, leaves, or moves between voice channels
  • Set a channel with /logs set voice-logs #channel
OLD v0.1

Announce Command

  • New /announce command — send an announcement as the bot with optional image and title
  • Image appears above the text for a clean presentation
OLD v0.1

Ticket System

  • New /ticket setup command — configure ticket panel, category, and staff role
  • 4 ticket types: Support, Report, Apply, Appeal — each with its own button on the panel
  • Tickets auto-numbered: ticket-0001, ticket-0002, etc.
  • One open ticket per user — prevents duplicates
OLD v0.1

Warning History

  • New /warns command — view all warnings for a member with reason, moderator, and timestamp
OLD v0.1

Auto-role on Join

  • New /welcome autorole subcommand — assign a role automatically when a member joins
  • Replaces the need for a separate verification bot
  • /welcome status now shows the configured auto-role

Available Badges

developer
developer Exclusive

Awarded to the developer of Ony bot.

owner
owner Rare

Own a server with over 2,000 members that uses Ony.

vip
vip Uncommon

Donate at least $2 to support Ony's development.

cute
cute Common

Win a giveaway in the Ony Support Server.

More badges coming soon!

Have a badge idea? Join the Ony Support Server and let us know.

How are badges granted?

For the moment badges are given manually. In the future they will be obtainable through quests, and new badges will be added weekly.

General

/help

Display all available commands organized by category.

PermissionNone
EphemeralNo

Usage

/help
Shows an embed with all commands grouped by category (General, Fun, Moderation, Administrator, Owner).
General

/botinfo

Display statistics and information about Ony.

PermissionNone
EphemeralNo

Usage

/botinfo
Shows uptime, server count, ping, Discord.js version, Node.js version, and memory usage.
General

/invite

Get the invite link to add Ony to your server.

PermissionNone
EphemeralNo

Usage

/invite
General

/userinfo

View detailed information about a user.

PermissionNone
EphemeralNo

Usage

/userinfo [user]

Options

OptionTypeRequiredDescription
userUserNoThe user to look up. Defaults to yourself.
Shows account creation date, server join date, roles, and profile avatar.
General

/serverinfo

View detailed information about the current server.

PermissionNone
EphemeralNo

Usage

/serverinfo
Shows member count, channel count, role count, boost level, owner, and server creation date.
General

/avatar

Get a user's avatar in full resolution.

PermissionNone
EphemeralNo

Usage

/avatar [user]

Options

OptionTypeRequiredDescription
userUserNoThe user whose avatar to display. Defaults to yourself.
General

/banner

Get a user's profile banner in full resolution.

PermissionNone
EphemeralNo

Usage

/banner [user]

Options

OptionTypeRequiredDescription
userUserNoThe user whose banner to display. Defaults to yourself.
Requires the target user to have Nitro with a banner set. Shows a message if no banner is found.
General

/afk

Set or clear your AFK status.

PermissionNone
EphemeralNo

Usage

/afk [reason]

Options

OptionTypeRequiredDescription
reasonStringNoReason for being AFK (shown when someone mentions you).
When AFK, mentioning you in chat will trigger a bot reply with your AFK reason. Sending a message removes your AFK status automatically.
General

/profile

View a beautiful canvas profile card for yourself or another user.

PermissionNone
EphemeralNo

Usage

/profile [user]

Options

OptionTypeRequiredDescription
userUserNoThe user to view. Defaults to yourself.
The card displays name, pronouns, birthday, occupation, timezone, badges, marriage status, and description — all set via /setprofile.
General

/setprofile

Customize your profile card fields.

PermissionNone
EphemeralNo

Usage

/setprofile <field> <value>

Fields

FieldDescriptionMax Length
nameYour display name on the card32
pronounsYour pronouns (e.g. he/him)32
birthdayYour birthday (e.g. 01/01/2000)32
occupationYour job or role64
timezoneYour timezone (e.g. UTC+2)32
descriptionA short bio about yourself128
Fun

/rps

Play rock-paper-scissors against the bot.

PermissionNone
EphemeralNo

Usage

/rps <choice>

Options

OptionTypeRequiredDescription
choiceStringYesYour move: rock, paper, or scissors.
Fun

/ship

Calculate the compatibility percentage between two users.

PermissionNone
EphemeralNo

Usage

/ship <user1> <user2>

Options

OptionTypeRequiredDescription
user1UserYesFirst user to ship.
user2UserYesSecond user to ship.
Generates a canvas image with both avatars and a compatibility percentage.
Fun

/marry

Propose to another user and marry them in-bot.

PermissionNone
EphemeralNo

Usage

/marry <user>

Options

OptionTypeRequiredDescription
userUserYesThe user to propose to.
Sends an interactive proposal embed. The target user must accept. Marriage is shown on both users' profile cards. Use /divorce to end it.
Fun

/divorce

Divorce your current in-bot partner.

PermissionNone
EphemeralNo

Usage

/divorce
Removes the marriage record from both users' profiles. You must be married to use this command.
Moderation

/ban

Ban a member from the server.

PermissionBan Members
Logged tostaff-logs
DMs targetYes

Usage

/ban <user> [reason] [delete_days]

Options

OptionTypeRequiredDescription
userUserYesThe member to ban.
reasonStringNoReason for the ban (shown in audit log and DM). Max 512 chars.
delete_daysIntegerNoDays of message history to delete (0–7). Default: 0.
Sends the banned user a DM with the reason and a ban appeal message before executing the ban.
Moderation

/unban

Unban a user by username or ID.

PermissionBan Members
Logged tostaff-logs
DMs targetYes

Usage

/unban <user> [reason]

Options

OptionTypeRequiredDescription
userStringYesUsername (e.g. shivy) or user ID of the banned user.
reasonStringNoReason for the unban. Max 512 chars.
If no exact match is found, suggests the closest username. DMs the user to let them know they can rejoin.
Moderation

/kick

Kick a member from the server.

PermissionKick Members
Logged tostaff-logs
DMs targetYes

Usage

/kick <user> [reason]

Options

OptionTypeRequiredDescription
userUserYesThe member to kick.
reasonStringNoReason for the kick. Max 512 chars.
Moderation

/warn

Warn a member. Auto-bans for 7 days at 3 warnings.

PermissionModerate Members
Logged tostaff-logs

Usage

/warn <user> [reason]

Options

OptionTypeRequiredDescription
userUserYesThe member to warn.
reasonStringNoReason for the warning. Max 512 chars.
⚠️ At 3 warnings, the member is automatically banned for 7 days and all their warnings are cleared.
Moderation

/warns

View all warnings for a member.

PermissionModerate Members
EphemeralNo

Usage

/warns <user>

Options

OptionTypeRequiredDescription
userUserYesThe member whose warnings you want to view.
⚠️ At 3 warnings the member is automatically banned for 7 days. Use /warn to issue a warning.
Moderation

/mute

Give a member the Muted role to restrict them from chatting.

PermissionModerate Members
Logged tostaff-logs
DMs targetYes

Usage

/mute <user> [reason]

Options

OptionTypeRequiredDescription
userUserYesThe member to mute.
reasonStringNoReason for the mute. Max 512 chars.
⚠️ For mute to work correctly

Make sure your Users role (or any member role) does not have Send Messages set as an explicit ✅ allow in channel overwrites. Leave it neutral (grey) — the base role permission is enough. If a role has an explicit allow, it will override the mute.

Moderation

/unmute

Remove the Muted role from a member.

PermissionModerate Members
Logged tostaff-logs
DMs targetYes

Usage

/unmute <user> [reason]

Options

OptionTypeRequiredDescription
userUserYesThe member to unmute.
reasonStringNoReason for the unmute.
Moderation

/timeout

Discord-native timeout (communication disabled) for a specified duration.

PermissionModerate Members
Logged tostaff-logs
DMs targetYes

Usage

/timeout <user> <duration> [reason]

Options

OptionTypeRequiredDescription
userUserYesThe member to timeout.
durationStringYesHow long to timeout for. Examples: 10m, 1h, 7d.
reasonStringNoReason for the timeout. Max 512 chars.
Maximum timeout duration is 28 days (Discord limit). The member cannot send messages, join voice channels, or react during a timeout.
Moderation

/clear

Bulk delete messages from the current channel.

PermissionManage Messages
Logged tomessage-logs

Usage

/clear <amount> [user]

Options

OptionTypeRequiredDescription
amountIntegerYesNumber of messages to delete (1–100).
userUserNoOnly delete messages from this specific user.
Discord only allows bulk-deleting messages newer than 14 days. Older messages are automatically excluded.
Moderation

/impersonate

Send a message in chat appearing as another user via webhook.

PermissionManage Webhooks
Logged tomessage-logs

Usage

/impersonate <user> <message>

Options

OptionTypeRequiredDescription
userUserYesThe user to impersonate (cannot be a bot).
messageStringYesThe message content to send. Max 2000 chars.
⚠️ All uses are logged to message-logs for accountability.
Administrator

/giveaway

Create and manage giveaways in your server.

PermissionManage Server
Logged tobot-logs

Subcommands

/giveaway start

Start a new giveaway.

/giveaway start <duration> <prize> [winners] [channel]
OptionTypeRequiredDescription
durationStringYesHow long the giveaway runs. Examples: 30m, 1h, 7d. Minimum: 1 minute.
prizeStringYesWhat to give away.
winnersIntegerNoNumber of winners (1–20). Default: 1.
channelChannelNoChannel to post the giveaway in. Default: current channel.

/giveaway end

End an active giveaway early and pick winners immediately.

/giveaway end <id>

/giveaway reroll

Reroll the winners for a finished giveaway.

/giveaway reroll <id>

/giveaway view

View all active giveaways in this server with entry counts and time remaining.

/giveaway view

/giveaway clear

Delete all giveaway data and reset IDs. Owner only.

/giveaway clear
Administrator

/welcome

Configure automatic welcome messages for new members.

PermissionAdministrator

Subcommands

/welcome set

Set the welcome channel and optional custom message.

/welcome set <channel> [message]
OptionTypeRequiredDescription
channelChannelYesThe channel to send welcome messages in.
messageStringNoCustom welcome text. Use {user} and {server} as placeholders.

/welcome autorole

Set a role to automatically give to every new member on join. Leave role empty to disable.

/welcome autorole [role]
OptionTypeRequiredDescription
roleRoleNoRole to assign on join. Omit to disable auto-role.

/welcome disable

Disable welcome or leave messages in this server.

/welcome disable <type>

/welcome status

View the current welcome, leave, and auto-role configuration.

/welcome status
Administrator

/logs

Configure logging channels for different event types.

PermissionAdministrator

Subcommands

/logs set

/logs set <type> <channel>
Log TypeWhat it logs
staff-logsBans, kicks, mutes, warns, badge actions, emoji steals
message-logsMessage deletes, edits, clears, impersonations
bot-logsGiveaway start/end/reroll, bot activity
voice-logsVoice channel join, leave, move events
invite-logsInvite creation and deletion

/logs remove

Remove the logging channel for a specific type.

/logs remove <type>

/logs view

View all currently configured log channels.

/logs view
Administrator

/steal

Copy a custom emoji from another server into this one.

PermissionManage Emojis
Logged tostaff-logs

Usage

/steal <emoji> [name]

Options

OptionTypeRequiredDescription
emojiStringYesPaste the custom emoji (e.g. <:name:id> or <a:name:id>).
nameStringNoOverride the emoji name (2–32 chars).
Works with both static and animated emojis. The emoji is added to your server's emoji list.
Administrator

/ticket

Set up and manage the ticket support system for your server.

PermissionAdministrator

Subcommands

/ticket setup

Post the ticket panel and configure settings. Re-running will update an existing config.

/ticket setup <channel> <category> <staff_role>
OptionTypeRequiredDescription
channelChannelYesText channel where the ticket panel will be posted.
categoryChannelYesCategory under which new ticket channels are created.
staff_roleRoleYesRole that can view and manage all tickets.
🎫 How it works

Members click one of 4 buttons on the panel: Support, Report, Apply, or Appeal. A private channel is created (e.g. ticket-0001) visible only to the member, staff role, and the bot. Tickets can be closed by the owner, staff, or an admin — with a confirmation step.

Owner

/badge

Manage badges that appear on user profile cards. Bot owner only.

PermissionBot Owner
Logged tostaff-logs

Subcommands

/badge create

/badge create <name> <emoji_id>

Create a new badge using a Discord emoji ID.

/badge delete

/badge delete <id>

Delete a badge by its numeric ID. Also removes it from all users.

/badge give

/badge give <user> <id>

Give a badge to a user. It will appear on their profile card.

/badge remove

/badge remove <user> <id>

Remove a badge from a user.

/badge list

/badge list

List all created badges with their IDs and emoji previews.

Owner

/debug

Internal diagnostics and debug tools. Bot owner only.

PermissionBot Owner
EphemeralYes

Usage

/debug
Used internally for testing and diagnostics. Output is only visible to the bot owner.
Owner

/servers

List all servers the bot is in, sorted by member count. Bot owner only.

PermissionBot Owner
EphemeralNo

Usage

/servers
Shows server name, ID, and member count — 10 per page. Use the ◀ Prev / Next ▶ buttons to navigate. Buttons expire after 2 minutes.
Administrator

/announce

Send an announcement as the bot with optional image, title, and style.

PermissionAdministrator
EphemeralYes (confirmation)

Usage

/announce [message] [image] [title] [channel] [style]

Options

OptionTypeRequiredDescription
messageStringNoAnnouncement text. Max 2000 chars.
imageAttachmentNoImage to attach. Appears above the text.
titleStringNoTitle for the embed. Max 256 chars. Ignored in plain style.
channelChannelNoChannel to send to. Defaults to current channel.
styleChoiceNoembed (default) or plain message.
At least one of message or image must be provided.