A Discord bot for keeping track of birthdays.

Overview

Birthbot

Birthbot is a Discord bot for keeping track of birthdays.

Features

  • Commands

    Birthbot recognises the following slash commands:

    • birthday get to retrieve a user's birthday
    • birthday set to add or update the command user's birthday
    • birthday unset to remove the command user's birthday
    • birthday announce to add or update the channel used for birthday announcements
    • birthday unannounce to remove the channel used for birthday announcements
    • birthday list to list all birthdays
    • birthday next to list any upcoming birthdays
  • Announcements

    Every 24 hours beginning from its startup time, Birthbot checks its database for any ongoing birthdays, taking timezones into account.

    If any matches are found, they are announced in the channel as specified by birthday announce. If no announcement channel is set up, the birthdays are ignored.

Setup

To host a separate instance of Birthbot, the following setup is required:

  • Environment

    Birthbot expects a .env file in its executing directory (or its parent(s)). This must contain the following information:

    • A TOKEN key, with Birthbot's secret token
    • A CLUSTER key, with the URI of the MongoDB cluster to use (usually in the format mongodb+srv://USERNAME:[email protected]/?retryWrites=true&w=majority)
    • A DATABASE key, with the name of the database to use

    Optionally, if Birthbot is compiled with the guild Cargo feature, it must also contain a GUILD key with a guild ID.

  • Database

    Birthbot stores all its data on a MongoDB database as specified by the .env file. Separate collections are used for each guild, in which separate documents are used to store each user's birthday.

Errors

If and when an error occurs, Birthbot attempts to notify the command user of it. Every error will also be printed to the standard error output.

Thanks to Rust's fantastic error handling, it is nearly impossible for Birthbot to crash due to an error.

Privacy

Birthbot stores the bare minimum amount of data necessary to perform its tasks. This includes:

  • Guild IDs - used as collection identifiers
  • User IDs - used as document identifiers
  • Channel IDs - used to announce birthdays
  • Birthdays - used to check birthdays
You might also like...
A Discord bot to send updates on queries in tori.fi

torimies-rs How the bot works? The bot works by making requests to the undocumented (and very bad) tori.fi api endpoint. The users can add and remove

A Discord bot for control and decentralization of threads management
A Discord bot for control and decentralization of threads management

Threadripper-bot A Discord bot for control and decentralization of threads management About Threadripper aims to serve some extra utilities to take be

A small in-house bot of the TTC Discord Server

Welcome to The Terminal cafe Support Bot Repository Hello, hope you are having a nice day. This is the official repository for The Terminal Cafe Suppo

 A Discord bot to send updates on queries in tori.fi
A Discord bot to send updates on queries in tori.fi

torimies-rs How the bot works? The bot works by making requests to the undocumented (and very bad) tori.fi api endpoint. The users can add and remove

A discord bot that safely executes whatever rust you throw at it. Remote code execution as a service
A discord bot that safely executes whatever rust you throw at it. Remote code execution as a service

RustBot Bot is still under development and not ready for production use RustBot is a discord bot that executes whatever rust code you throw at it. In

An experimental Discord bot using Serenity.

VoidBot An experimental Discord bot using Serenity. Environment Variables Can be set with a .env file. DISCORD_TOKEN: The token for your bot. (require

Yet another multi-purpose discord bot

virus yet another multi-purpose discord bot

sentry - yet another multi-purpose discord bot

sentry - yet another multi-purpose discord bot

This is a Discord bot written in Rust to translate to and from the Bottom Encoding Standard using bottom-rs and Serenity.
This is a Discord bot written in Rust to translate to and from the Bottom Encoding Standard using bottom-rs and Serenity.

bottom-bot This is a Discord bot written in Rust to translate to and from the Bottom Encoding Standard using bottom-rs and Serenity. Ever had this pro

Comments
  • Incorrect output when using `birthday next`

    Incorrect output when using `birthday next`

    The birthday next command produces incorrect output.

    The cause is that when sorting birthdays, their original years are used, which leads to them being sorted according to years first, then months, then days. The intended behaviour is for birthdays to be sorted according to months and days only.

    A possible fix would be to map() the birthdays to dates with the current year and UTC timezone before sorting them, though this would result in the allocation of another Vec<DateTime<Utc>>.

    bug 
    opened by Carnagion 1
  • Birthbot 0.2.0

    Birthbot 0.2.0

    New features and improvements.

    Features

    • birthday list command
    • birthday next command
    • Enforce minimum and maximum values for integer options
    • Enforce correct channel types for channel options

    Fixes

    • All errors are printed to stderr instead of stdout
    opened by Carnagion 0
  • Birthbot 0.1.0

    Birthbot 0.1.0

    Initial release.

    Features

    • birthday get command
    • birthday set command
    • birthday unset command
    • birthday announce command
    • birthday unannounce command
    • Periodic checks (every 24 hours) for birthdays
    • guild feature for quick testing
    opened by Carnagion 0
Releases(v0.2.1)
Owner
Indraneel Mahendrakumar
Average functional programming enthusiast. Musician and gamer.
Indraneel Mahendrakumar
A rust(serenity) based discord bot for the hacksquad discord server

A Discord Bot for Hacksquad How to Deploy? Requirements Docker Docker Compose Steps To Run Copy the docker-compose.yml and .env.example files to your

HackSquad 5 Jan 4, 2023
Rewrite of the Discord Bot used for Managing the Infinity Bot List Servers.

Arcadia Rewrite of the Discord Bot used for Managing the Infinity Bot List Servers. Contributing Always run fmt.sh before making a Pull Request! MacOS

InfinityBotList 3 Dec 15, 2022
A simple bot for discord.

Rusky Um simples bot para o discord! ?? Executando ⚠️ Antes de tudo você precisa do Rust Instalado você pode instalar clicando aqui Preparando Primeir

Rusky 3 Aug 12, 2022
A Discord bot for lichess and Rosen related things

liro Liro is a Discord bot that follows in the footsteps of Lichess-discord-bot, without necessarily aiming to replace it. The main pain point that th

Sebastian Lauwers 5 Feb 16, 2022
Hi I'm Sophy, a discord bot in devlopment, soon I'll be available to help everyone (❁´◡`❁)

Sophy Bot Hi I'm Sophy, a discord bot in devlopment, soon I'll be available to help everyone (❁´◡`❁) Contribution Do you like me and want to help me?

Far Dragi 0 May 30, 2022
A Discord bot for sending GeoGuessr challenge links that uses the GeoGuessr API written in rust.

GeoGuessr-bot-rs This is a simple implementation of a discord bot that send GeoGuessr-challenge links on demand. Features: Slash-commands Lightning-fa

Luukas Pörtfors 6 Nov 18, 2022
🦴🤖 // A Discord bot about collecting all the Borpa

?? ?? Borpa Bot Borpa Bot is a Discord bot about collecting all the Borpa possible. If you dont know what a Borpa is you can find it here Crate Descri

mellowmarshe 1 Dec 19, 2021
A scriptable discord bot (WIP)

Status This project is currently a VERY EARLY WORK IN PROGRESS. Contact me on discord for more details: Jonas747#0001 (105487308693757952) BotLoader (

null 26 Dec 21, 2022
🦜 A hassle-free, highly performant, host it yourself Discord music bot built with Serenity in Rust. Powered by youtube-dl and Genius.

?? A hassle-free, highly performant and fast evolving Discord music bot built with Serenity in Rust. Deployment Usage Just create a bot account, copy

Miguel Mano 82 Dec 14, 2022
The best discord bot to annoy @a3mat

A3mat v pomoyke The best discord bot to annoy @a3mat Usage: This command moves pinged users n times: move <number> [users...] This command moves ping

null 1 Dec 31, 2021