Virgil is a multipurpose bot designed to do it all. Obviously we're not quite there yet as this bot is a major work-in-progress.
Legend:
?
- Optional<blah: $type>
- Argument (with type)
/verify
- Does what you think it does/update
- Updates a user's Roblox roles (has a user context equivalent)/reverify
- Sends instructions to change linked Roblox account/roblox
- Displays Roblox profile information
/antiphish status
- Display current antiphish settings/antiphish toggle-antiphish
- Toggles antiphish on/off/antiphish toggle-autoban
- Toggles autoban on/off/antiphish set-message <message: string>
- Sets the antiphish ban message/banmessage set <message: string>
- Sets the message to send when a user is banned (displayed before reason)/banmessage clear
- Clears the ban message/bind group <group_id: integer> <role: RoleResolvable> <rank?: integer>
- Bind a role to a group and rank/bind badge <badge_id: integer> <role: RoleResolvable>
- Bind a role to a badge/bind bundle <bundle_id: integer> <role: RoleResolvable>
- Bind a role to a bundle/bind gamepass <gamepass_id: integer> <role: RoleResolvable>
- Bind a role to a GamePass/bind asset <asset_id: integer> <role: RoleResolvable>
- Bind a role to a generic asset (any type not previously mentioned)/bind unverified_status <role: RoleResolvable>
- Bind a role to not being verified (should not be used as a replacement for appropriate channel permissions)/bind verified_status <role: RoleResolvable>
- Bind a role to being verified/bind friend_status <role: RoleResolvable>
- Bind a role to being a friend with a user/bypasses add <target: GuildMember | Role>
- Adds a user or role to the autoverification bypass list/bypasses list
- Lists active autoverification bypasses/bypasses remove <target: GuildMember | Role>
- Removes a user or role from the autoverification bypass list/deletebind <id: string>
- Deletes a bind/factoryreset
- Deletes ALL settings and leaves the server/filter add <word: string> <filter_type: exact | wildcard> <case_sensitive?: boolean>
- Adds a word filter/filter add_bypass <entity: Mentionable>
- Adds a bypass to the word filter/filter list
- List all word filters/filter list_bypasses
- List all entities that bypass the word filter/filter remove <id: string>
- Remove a word filter/filter remove_bypass
- Remove a bypass from the word filter-/initialize
- Initializes the server's settings in the database (this is only used if the bot is added when it is offline)/listbinds
- Lists all binds/nicknameformat <format: string>
- Sets the nickname format (see nickname formatting)/nicknamelock
- Sets whether usernames should periodically be updated
/ban <user: UserResolvable> <reason?: string> <days?: integer> <hours?: integer> <minutes?: integer>
- Bans a user (for time specified - otherwise permanent)/kick <user: UserResolvable> <reason?: string>
- Kicks a user/mute <user: UserResolvable> <reason?: string> <hours?: integer> <minutes?: integer>
- Mutes a user
/avatar <user?: UserResolvable>
- Displays a user's avatar/help
- Sends link to this document/ping
- Displays the bot's ping/serverinfo
- Displays server information/whois <user?: UserResolvable>
- Displays information about a user
/8ball <question: string>
- Answers a question/birb
- Displays a random bird image/bonk <user: UserResolvable>
- Bonks a user/cat
- Displays a random cat image/dog
- Displays a random dog image/duck
- Displays a random duck image/fact
- Displays a random fact/httpcat
- Displays an HTTP cat image/hug <user: UserResolvable>
- Hugs a user/internetspeed
- Displays your current internet speed (not really)/legal
- Sends a link to the Privacy Policy and Terms of Service/noobdetector <user: UserResolvable>
- Detects noobiness of user/owoify <text: string>
- Owoifies your message/say <text: string>
- Says something (Admin only)
Log configuration is more complex compared to the other commands, which is why there is a dedicated section.
The general syntax is /logs {action} <channel: Channel> <log_type: string>
. Not choosing a log type is interpreted as selecting all of them.
Actions:
ignore
- Ignores specified log type in specified channellist
- Lists all log settingsremove
- Removes specified log type from specified channelset
- Set a channel to receive specified log typeshow_ignored
- Lists all ignored channels and the associated log typesunignore
- Unignores specified log type in specified channel
The channel types vary depending on the log type. For instance, you cannot ignore voice logs for a text channel.
Log types:
ban
- Bans (GUILD_BAN_ADD)delete
- Message deletions (MESSAGE_DELETE)edit
- Message edits (MESSAGE_UPDATE)member_join
- Member joins (GUILD_MEMBER_ADD)member_leave
- Member leaves (GUILD_MEMBER_REMOVE) - Note: This is also triggered by banning or kicking a usermessage_report_actions
- Reported message is acted on by a moderatormessage_reports
- A message is reported to server moderatorsnickname
- Nickname changes (GUILD_MEMBER_UPDATE)role
- Member roles are updated (GUILD_MEMBER_UPDATE)thread_create
- Threads are created (THREAD_CREATE)thread_delete
- Threads are deleted (THREAD_DELETE)thread_update
- Threads are updated (THREAD_UPDATE)unban
- Ban is removed (GUILD_BAN_REMOVE)voice_deafen
- User was deafened/undeafened (VOICE_STATE_UPDATE)voice_join
- User joined a voice channel (VOICE_STATE_UPDATE)voice_leave
- User left a voice channel (VOICE_STATE_UPDATE)voice_mute
- User was muted/unmuted (VOICE_STATE_UPDATE)voice_switch
- User switched voice channels (VOICE_STATE_UPDATE)voice_video
- User started/stopped streaming video (VOICE_STATE_UPDATE)warn
- A moderator warned a user
The following variables can be used in the nickname format:
{{USERNAME}}
- The user's Roblox username{{DISPLAYNAME}}
- The user's Roblox display name{{ROBLOXID}}
- The user's Roblox ID (an integer){{DISCORDNAME}}
- The user's Discord username{{DISCORDID}}
- The user's Discord ID (a snowflake){{SERVER}}
- The server's name{{SMARTNAME}}
- The user's Roblox display name, if the same as their Roblox username, otherwise displays as{{DISPLAYNAME}} ({{USERNAME}})
The default format is {{SMARTNAME}}
.