ARC Discord Bot

From CECS wiki
Jump to navigation Jump to search

We previously had a Discord bot, but we are now developing a better version. This bot is designed to handle general tasks that the club needs. As you explore its features, you will notice that many of them are intended to help officers and admins configure the bot, manage club operations, and make everything run better.

This is also a full rewrite from Python to Discord.js using JavaScript. We are also using better-sqlite3 for the database. The previous bot had some issues with memory being dirty, timers not functioning right, and other problems, so we improved it to make it more reliable and work better. This also mean we will have some cached results and easy operational use.

Developer Documentation[edit | edit source]

see also Category:ARC Discord Bots

Future Features[edit | edit source]

  • git hub for all bots should be linked here, and seperate sections for mARCo and AR-CAT-UCF
  • Pings users back to a message after a selected amount of time (like a timer), or let the user pick the time/date the bot pings
  • [ [wiki title] ] to send the corresponding wiki link
    • T CS links
    • could test having it send wiki pages with out using the brackets
      • if a user says "..ham exam.." the bot could say "oh we have a page for that!"
  • a counter for the times Steve types Teh/teh instead of The/the
    • optional additional metrics/stats
  • attendance
  • Links
    • Use our link shortners
    • They should be hyperlinked instead of showing the actual link
    • Command for just where is the shack is, and the link on how to get there
  • Event bot
    • Need to be able to give it a list of dates, or a weekly/biweekly/monthly set schedule (Tuesdays at 4:45) for reoccurring events
      • ability to import ICS files for easy multi event addition
    • Add a picture to the event
      • Bonus points if the bot has some preset images we can upload for pictures we use often
        • tabling pictures: SU, Memory mall, etc
        • FD
    • Use ARC gold for the accent colors hex code: FF C9 04
    • Reactions for easy sign up
      • Custom emojis for different events
        • an option for unlicensed folk to sign up for the net, and say that they want someone to control operate for them
      • Sign ups add folk's name to the event like Apollo bot
      • Easy head counts

mARCo[edit | edit source]

User Commands[edit | edit source]

These commands are not fully done and being in progress. The usages are generated by AI bc im lazy:>

General[edit | edit source]

/ping
Check whether the bot is online.
/ping
/status
View the bot’s uptime.
/status

Timers[edit | edit source]

/timer
Create a reminder.
Parameters:
  • minutes — Minutes from now.
  • days — Days from now.
  • when — A time or date, such as 4:30pm, tomorrow 9am, or 2026-07-25 14:30.
  • name — Optional timer name.
  • message — Optional reminder text.
Rules:
  • Use minutes/days or when, not both.
  • Minimum duration: 1 minute.
  • Maximum duration: 366 days.
  • Multiple timers are allowed.
Examples:
/timer minutes:10 name:Laundry message:Move clothes to dryer
/timer days:2 name:Exam
/timer when:4:30pm message:Check the repeater
/timer when:tomorrow 9am name:Meeting

Links[edit | edit source]

/links show
View ARC links.
Parameters:
  • category — Optional. Choices: All, Club & Wiki, Study & Testing, or Operating Reference.
Examples:
/links show
/links show category:Study & Testing

Exam Information[edit | edit source]

/exam
View US amateur radio license exam information.
Parameters:
  • level — Optional. Choices: All, Technician, General, or Amateur Extra.
Examples:
/exam
/exam level:Technician

Callsign Lookup[edit | edit source]

/callsign lookup
Look up a US amateur radio callsign.
Parameters:
  • callsign — Required.
  • public — Optional. Use true to post publicly. Default: private.
Examples:
/callsign lookup callsign:K4UCF
/callsign lookup callsign:W1AW public:true

Admin Commands[edit | edit source]

Link Management[edit | edit source]

Requires the Discord Manage Server permission.
/links add
Add or update a server link.
Parameters:
  • title — Required. Link title.
  • url — Required. Must begin with http:// or https://.
  • category — Required. Choices: Club & Wiki, Study & Testing, or Operating Reference.
  • sort_order — Optional. Lower numbers appear first.
Example:
/links add title:Repeater Book url:https://example.com category:Operating Reference
/links list
View link IDs.
Parameters:
  • limit — Optional. Number of links to show, from 1 to 100.
Example:
/links list
/links remove
Remove a link.
Parameters:
  • id — Required. Use an ID from /links list.
Example:
/links remove id:12

Event Management[edit | edit source]

Requires the Discord Manage Events permission.
/event create
Create an event signup message.
Parameters:
  • title — Required. Event title.
  • image — Optional. Image URL for the embed image.
  • dates — Optional. Comma-separated dates and times.
  • repeat — Optional. Choices: None, Weekly, Biweekly, or Monthly.
  • first — Optional. First event date and time.
  • weekday — Optional. Weekday for a recurring event.
  • time — Optional. Time for a recurring event.
  • start_date — Optional. Start date for a recurring event.
  • occurrences — Optional. Number of events to create, from 1 to 52.
  • post_count — Optional. Number of event messages to post immediately, from 1 to 10.
  • duration — Optional. Duration in minutes.
  • channel — Optional. Channel for the signup message.
  • location — Optional. Event location.
  • description — Optional. Event details.
  • control_operator — Optional. Show or hide the Need Control Op button.
  • emoji_going — Optional. Custom Going emoji.
  • emoji_maybe — Optional. Custom Maybe emoji.
  • emoji_no — Optional. Custom Not Going emoji.
  • emoji_control — Optional. Custom Need Control Op emoji.
Examples:
/event create title:Club Meeting first:2026-08-12 6pm location:Student Union
/event create title:Weekly Net repeat:Weekly weekday:Tuesday time:4:45pm channel:#events
/event create title:Field Day dates:2026-08-01 9am, 2026-08-02 9am post_count:2
/event create title:Workshop first:2026-09-20 7pm location:StudentUnion image:https://example.com/flyer.png
/event list
View upcoming event IDs and series IDs.
Parameters:
  • limit — Optional. Number of events to show, from 1 to 25.
Example:
/event list
/event stop
Stop a recurring event series and cancel its future events.
Parameters:
  • series_id — Required. Use a series ID from /event list.
Example:
/event stop series_id:1
/event cancel
Cancel one event.
Parameters:
  • event_id — Required. Use an event ID from /event list.
Example:
/event cancel event_id:4
/event refresh
Refresh an event signup message.
Parameters:
  • event_id — Required. Use an event ID from /event list.
Example:
/event refresh event_id:4

wikiRicky[edit | edit source]

  • post notification for every page edit
  • Bugs / feature requests
    • sometimes gets confused and reposts old edits (should ignore edits not done today or prior to previous post?)
    • sometimes double posts (should coalesce identical notifications)
    • should ignore changes flagged as minor (is this in the rss feed?)
    • should include edit summary when provided
    • should be able to filter by category (this could be messy to do recursively if rss link doesn't support it)