Alani · Discord

Alani on
Discord

Reminders and events, music for voice calls, health and routine trackers. You type a short command; she answers in the channel or in a direct message.

Getting started

The basics

Prefixes

Most commands start with .a. The music player uses .avc and the trackers use .at.

In a direct message

You can leave the .a off: info, vc status, t bp list.

Quote your text

Reminder text and event titles go in double quotes, so they can hold spaces, commas and emoji.

Access. Some features, such as your own reminder database, the trackers and a few music actions, need access that Alani's owner grants. If a command says you do not have permission, ask for access.

Times are 24-hour, in Bangkok time (GMT+7), unless a command says otherwise.

Reminders & events

.a db

Keep reminders and calendar-style events in a database that is yours, or shared by a server. Every database is used with the same commands once you have one.

Your databases

Personal is one private database for you, usable from any channel. Server is one database for a server that you can share with collaborators; its events also appear as real Discord server events.

.a db create personal <name> <channel-id|dm>
.a db create server <name> <channel-id|dm>
.a db drop <name>
.a db collab add <name> <user-id>       (server databases)
.a db collab remove <name> <user-id>    (server databases)
.a list db                            which databases you can use

The channel you choose when creating a database is where its reminders and events are delivered by default (or dm for a direct message). You can still send an individual one somewhere else by adding a channel ID.

Adding, listing, editing and deleting
.a db [<name>] add reminder <YYYY-MM-DDTHH:MM> "<text>" [mentions] [channel-id] [force]
.a db [<name>] add event <start> [end|allday] "<title>" [| <location>] [force]

.a db [<name>] list reminders
.a db [<name>] list events

.a db [<name>] delete reminder <id|all>
.a db [<name>] delete event <id>

.a db [<name>] edit reminder <id> <YYYY-MM-DDTHH:MM> "<text>"
.a db [<name>] edit event <id> <start> <end> "<title>" [| <location>]
  • <name> can be left off when you only have one database to choose from.
  • Dates can be shortened: the year, the month, even the whole date can be left off and today's is assumed. T19:00 alone means “today at 7 pm”.
  • Mentions are a comma-separated list of user IDs and/or usernames after the text, for example ... "take out the trash" alice,bob. They are tagged when the reminder fires in a shared channel.
  • force adds the entry even if it looks like a duplicate or overlaps another.
.a db add reminder T19:00 "take out the trash"
.a db add event 2026-11-02T14:00 2026-11-02T15:30 "Project meeting" | Room 4

Music player

.avc

Alani joins your voice channel and plays audio for everyone in the call, with a queue that is saved for the server. Anyone in the call can use it.

Commands
.avc join                      join your voice channel
.avc play FILE NAME            add to the end of the queue
.avc play "A" "B"              add several at once (each full name in quotes)
.avc pause                     pause (again to resume)
.avc skip [NUMBER]             next track, or jump to that queue position
.avc list [a|d|m]              what you can play: A-Z / newest first / grouped by media
.avc queue                     the current track and its neighbours, all tracks in pages
.avc queue list                the whole queue as one list
.avc queue loop on|off
.avc queue shuffle on|off      (shuffle also means loop)
.avc queue playcall on|off     “Now playing” messages on or off
.avc remove FILE NAME
.avc status
.avc leave                     the queue is kept

Two more actions need extra access from Alani's owner: .avc force play FILE NAME (play next and skip the current track) and .avc removeall (clear the queue).

Short forms, naming and behaviour
ShortFullShortFull
jjoinrmremove
pplayrmaremoveall
fpforce playststatus
papauselvleave
skskipllist
qqueueqlqueue list
lploop (under queue)shshuffle (under queue)
pcplaycall (under queue)e.g. .avc q lp on
  • File names ignore case and extension, and a partial name works if it matches exactly one file.
  • Naming: files named ARTIST-GAME-Song name are grouped by game in .avc list m.
  • The queue is a list in the order added. Finished tracks drop off unless loop or shuffle is on; shuffle jumps to a random track without reordering the list.
  • Leaving and returning: leave then join picks up where you left off. Alani leaves by herself after a few minutes of silence or when she is alone in the call.

Trackers

.at

Track blood pressure, pills and routines, with reminders at the times you choose. A tracker belongs to you (me, the default) or to a server (server). Using the trackers needs access from Alani's owner; reading the help does not.

Tracker types
TypeWhat it isHow many
Bloodpressure trackerLog readings (systolic and diastolic), get a daily reminder.One per owner
Pill trackerHolds all your pills, each with its own reminder time; log taken or not taken.One per owner
Activity trackerA named recurring reminder (for example a weekly event), with no logs.As many as you like
.at type list                  the types and how to use each
.at help                       every command, in short
Set up and reminders
.at create type:"Bloodpressure tracker" [me|server]
.at create type:"Pill tracker" [me|server]
.at create type:"Activity tracker" name:"Fortnite karaoke weekly"
.at enable|disable "NAME"           reminders on or off (your data is kept)
.at permission grant|revoke USER    let someone use all of an owner's trackers
.at list                            your trackers (and this server's)

.at setting "NAME" recuring:daily at:T21:00 to:"Register today blood pressure" sent:dm
.at setting "NAME" recuring:weekly friday,sunday at:T19:30 to:"It's Karaoke Time!!!" tag:alice,bob sent:CHANNEL_ID
.at setting "NAME" recuring:monthly 1,15,last at:T09:00 ...
.at setting "NAME" recuring:yearly at:10,03,T09:00 ...        (month, day, time)
  • Times are 24-hour in tz (default GMT+7). tag: takes user names or IDs. sent: is dm or a channel ID.
  • Blood pressure is daily only. A pill tracker's setting only takes tz, tag and sent.
  • Blood-pressure and pill reminders are skipped when that day's reading or dose is already logged.
  • A pill reminder in a direct message can be answered with a plain y or n.
Logging and reading your data
.at la bp 120 80                   log a blood-pressure reading now (la = logadd)
.at bp list                        browse the readings
.at bp export RANGE                export them as a text file
.at bp delete RANGE                delete readings (asks first)

.at pill addpill "Full name"/"alias" recuring:daily at:T21:00
.at pill removepill NAME|ALIAS     remove a pill and its logs (asks first)
.at pill pills                     the pills and their schedules
.at la p bpl,fl y                  log pills taken (y) or not taken (n)
.at pill list|export|delete [PILL] [RANGE]

.at server bp list                 the server's tracker instead of yours

Ranges: all, latest14, oldest5, 2026/10/1, 2026/10/1-2026/11/13. Exports are oldest to newest.

Help

Built-in guides

.a info          what Alani is and the list of commands
.a info db       how reminders and events work
.a info avc      the music player
.a info at       the trackers
.at help         every tracker command
.at type list    the tracker types