{"id":21092358,"url":"https://github.com/dfuchss/yarb","last_synced_at":"2026-04-02T21:29:27.562Z","repository":{"id":250388278,"uuid":"834329538","full_name":"dfuchss/yarb","owner":"dfuchss","description":"Yet another Reminder Bot","archived":false,"fork":false,"pushed_at":"2026-04-01T11:44:52.000Z","size":184,"stargazers_count":2,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-01T13:31:33.308Z","etag":null,"topics":["bot","matrix","reminder","trixnity"],"latest_commit_sha":null,"homepage":"https://fuchss.org/projects/yarb","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dfuchss.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-07-27T00:48:24.000Z","updated_at":"2026-04-01T11:44:38.000Z","dependencies_parsed_at":"2025-05-15T21:25:01.027Z","dependency_job_id":"15b0183c-60a5-4814-84ba-175af2765217","html_url":"https://github.com/dfuchss/yarb","commit_stats":null,"previous_names":["dfuchss/yarb"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/dfuchss/yarb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dfuchss%2Fyarb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dfuchss%2Fyarb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dfuchss%2Fyarb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dfuchss%2Fyarb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dfuchss","download_url":"https://codeload.github.com/dfuchss/yarb/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dfuchss%2Fyarb/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31316813,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bot","matrix","reminder","trixnity"],"created_at":"2024-11-19T21:53:39.720Z","updated_at":"2026-04-02T21:29:27.542Z","avatar_url":"https://github.com/dfuchss.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# YARB - Yet Another Reminder Bot\n\nThis bot can be used to create reminders for a specific time at a day.\n\n## Features\n\n* Create reminders for a specific time at the current day.\n* Change display name per room\n* Configure an offset for the reminder time\n* Simple rights management (same as for my other bots)\n\n![Functions](.docs/images/functions.png)\n\n## Setup\n\n1. Get a matrix account for the bot (e.g., on your own homeserver or on `matrix.org`)\n2. Prepare configuration:\n    * Copy `config-sample.json` to `config.json`\n    * Enter `baseUrl` to the matrix server and `username` / `password` for the bot user\n    * Add yourself to the `admins` (and delete my account from the list :))\n    * You can limit the users that can interact with the bot by defining the `users` list\n3. Either run the bot via jar or run it via the provided docker.\n    * If you run it locally, you can use the environment variable `CONFIG_PATH` to point at your `config.json` (defaults to `./config.json`)\n    * If you run it in docker, you can use a command similar to this `docker run -itd -v $LOCAL_PATH_TO_CONFIG:/usr/src/bot/data/config.json:ro ghcr.io/dfuchss/yarb`\n\n## Configuration\n\nThe bot is configured through a JSON configuration file. Copy `config-sample.json` to `config.json` and adjust the following options:\n\n### Required Configuration Options\n\n| Option | Type | Description |\n|--------|------|-------------|\n| `baseUrl` | String | The base URL of the Matrix server (e.g., `\"https://matrix-client.matrix.org\"`) |\n| `username` | String | The username of the bot's Matrix account |\n| `password` | String | The password of the bot's Matrix account |\n| `admins` | Array of Strings | List of Matrix user IDs that have admin privileges (e.g., `[\"@user:matrix.org\"]`) |\n\n### Optional Configuration Options\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `prefix` | String | `\"yarb\"` | The command prefix the bot listens to (change if you want to use a different command like `!lunch` instead of `!yarb`) |\n| `dataDirectory` | String | `\"./data/\"` | The path to the directory where the bot stores its data (timers, media downloads, etc.) |\n| `users` | Array of Strings | `[]` | List of Matrix server domains or full user IDs that are allowed to interact with the bot. If empty, all users can interact. Examples: `[\":matrix.org\", \":fuchss.org\"]` for server domains, or `[\"@user:matrix.org\"]` for specific users |\n| `offset_in_minutes` | Number | `0` | Offset for reminders in minutes. For example, `5` means reminders will be sent 5 minutes **before** the specified time. Must be 0 or positive |\n\n### Configuration Examples\n\n**Basic configuration (all users allowed):**\n```json\n{\n    \"prefix\": \"yarb\",\n    \"baseUrl\": \"https://matrix-client.matrix.org\",\n    \"username\": \"my-reminder-bot\",\n    \"password\": \"your-bot-password\",\n    \"dataDirectory\": \"./data/\",\n    \"admins\": [\"@yourusername:matrix.org\"],\n    \"users\": [],\n    \"offset_in_minutes\": 0\n}\n```\n\n**Restricted configuration (only specific servers allowed, with 5-minute early reminders):**\n```json\n{\n    \"prefix\": \"remind\",\n    \"baseUrl\": \"https://your-homeserver.com\",\n    \"username\": \"reminder-bot\",\n    \"password\": \"your-bot-password\",\n    \"dataDirectory\": \"/path/to/bot/data/\",\n    \"admins\": [\"@admin1:your-server.com\", \"@admin2:your-server.com\"],\n    \"users\": [\":your-server.com\", \":trusted-server.org\"],\n    \"offset_in_minutes\": 5\n}\n```\n\n### Environment Variables\n\n| Variable | Description | Default |\n|----------|-------------|---------|\n| `CONFIG_PATH` | Path to the configuration file | `./config.json` |\n\n## Usage\n\n* An admin can invite the bot to an *unencrypted* room. If the room has enabled encryption or if the invite was not sent by an admin, the bot ignores it (without logging it)\n* After the bot has joined use `!yarb help` to get an overview about the features of the bot (remember: the bot only respond to users)\n* In order to create a new reminder use `!yarb \u003ctime\u003e \u003cmessage\u003e`. The time has to be in the format `HH:mm` (e.g., `!yarb 12:00 Lunch time!`).\n* You can configure the bot name in the `config.json` \n\n### Advanced: Multi-Option Polls with Reminders\n\nYou can create **polls** where participants vote using emoji reactions, and everyone who voted gets reminded with only the winning option(s). To do this, provide multiple lines after the time. Each line must be in the form:\n\n```\n\u003cemoji\u003e: \u003cmessage\u003e\n```\n\nIf you supply only a single message or the format is invalid, it gracefully falls back to the simple reminder behavior using the default reaction (`:+1:`).\n\nExample (three lunch options):\n\n```\n!yarb 12:30 \n🍕: Pizza\n🍔: Burger\n🥗: Salad\n```\n\nParticipants vote by reacting with 🍕, 🍔, or 🥗. At 12:30 (minus offset) the bot tags **everyone who voted** (regardless of their choice) and posts only the **winning option**. If there's a tie for most votes, all tied options are listed.\n\n\n## Development\n\nI'm typically online in the [Trixnity channel](https://matrix.to/#/#trixnity:imbitbu.de). So feel free to tag me there if you have any questions.\n\n* The bot is build using the [Trixnity](https://trixnity.gitlab.io/trixnity/) framework.\n* The basic functionality is located in [Main.kt](src/main/kotlin/org/fuchss/matrix/yarb/Main.kt). There you can also find the main method of the program.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdfuchss%2Fyarb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdfuchss%2Fyarb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdfuchss%2Fyarb/lists"}