{"id":20217944,"url":"https://github.com/matrix-org/conference-bot","last_synced_at":"2025-08-21T11:32:29.523Z","repository":{"id":44630024,"uuid":"325413047","full_name":"matrix-org/conference-bot","owner":"matrix-org","description":"The conductor for your orchestra^Wconference","archived":false,"fork":false,"pushed_at":"2025-03-14T13:23:16.000Z","size":1079,"stargazers_count":46,"open_issues_count":66,"forks_count":8,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-04-08T09:47:50.229Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/matrix-org.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2020-12-30T00:04:39.000Z","updated_at":"2025-04-04T04:24:06.000Z","dependencies_parsed_at":"2023-12-04T20:26:29.715Z","dependency_job_id":"d10b6695-3c85-49b5-8a6a-494f4fdd7a61","html_url":"https://github.com/matrix-org/conference-bot","commit_stats":{"total_commits":312,"total_committers":7,"mean_commits":44.57142857142857,"dds":0.5576923076923077,"last_synced_commit":"9d3d19171d45b352b8d5bb666549341ea52fbe08"},"previous_names":[],"tags_count":53,"template":false,"template_full_name":null,"purl":"pkg:github/matrix-org/conference-bot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matrix-org%2Fconference-bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matrix-org%2Fconference-bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matrix-org%2Fconference-bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matrix-org%2Fconference-bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matrix-org","download_url":"https://codeload.github.com/matrix-org/conference-bot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matrix-org%2Fconference-bot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271470238,"owners_count":24765354,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-21T02:00:08.990Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2024-11-14T06:36:33.356Z","updated_at":"2025-08-21T11:32:29.192Z","avatar_url":"https://github.com/matrix-org.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# conference-bot\nThe conductor for your orchestra^Wconference\n\n## Development\n\n1. `yarn install`\n2. Copy `config/default.yaml` to `config/development.yaml` and edit accordingly.\n3. `yarn start:dev`\n\nThe project is a TypeScript bot based off the concepts of [Mjolnir](https://github.com/matrix-org/mjolnir),\nusing [matrix-bot-sdk](https://github.com/turt2live/matrix-bot-sdk) as a base.\n\n## Production (Docker)\n\nTODO:\n* Information for what the bot does\n\nThis bot is best deployed with Docker. Note that the steps required to get the bot into production are\ncomplicated.\n\n1. First, register a user on your homeserver for the bot to use. In Synapse, this would be `register_new_matrix_user`.\n2. Set up any profile data for that user (displayname and avatar).\n3. On your homeserver, prepare and install an appservice registration like so:\n   ```yaml\n    id: conference_bot # Can be any helpful identifier\n    hs_token: CHANGE_ME # hs_token and as_token must be unique and secret\n    as_token: CHANGE_ME\n    namespaces:\n      users:\n        - exclusive: true\n          regex: '@yourbot:example.org'  # Set this to your bot's user ID.\n      aliases:\n        - exclusive: false\n          regex: '#.*:example.org'  # Change the domain to match your server.\n      rooms: []\n    url: null  # Important! The bot doesn't receive transactions, so set this explicitly to null.\n    sender_localpart: not_confbot  # Use something other than your bot's localpart.\n    rate_limited: false  # Important! The bot is noisy.\n   ```\n4. Create `/etc/conference-bot` or wherever you are comfortable with mapping a volume for the bot.\n5. Copy `config/default.yaml` from this repo to `/etc/conference-bot/config/production.yaml` and edit\n   accordingly.\n6. Run the container with Docker. For example: `docker run -d --rm --name conference-bot -v /etc/conference-bot:/data -p 8080:8080 matrixdotorg/conference-bot`\n7. Reverse proxy port `8080` as appropriate, using SSL if needed.\n\n## Usage\n\nTODO:\n* Some sort of `!import \u003curl\u003e` command (widget?)\n* Some sort of `!run \u003cevent code\u003e` command (widget?)\n* Interactions with Mjolnir\n* Expectations that livestreams are handled external to the bot\n\n## Room kinds\n\nThe conference bot uses the following terminology for defining what purpose a Matrix room serves:\n\n* `Auditorium` - A place where talks are held with a static livestream for the whole event. In a physical\n  world, this would be the location where attendees go to see a talk.\n* `Talk` - A presentation. During the talk, the talk room will be closed to only the speakers and other\n  relevant people (questions would be asked in the stage room). After the talk, the talk room is opened\n  up and used for \"hallway\" conversations with the speakers.\n* `Special Interest` - These are rooms where subject matter is usually specific and the bot's concern\n  with it is largely moderation and lightly scheduled events. These are most like stands at a physical\n  conference, or places to hold larger discussions.\n\n## Running the end-to-end tests\n\nBefore running the end-to-end tests you need to have a running homerunner instance.\n\nTo do so, get a Complement checkout (`git clone https://github.com/matrix-org/complement`) and in the Complement directory,\ncompile homerunner with `go build ./cmd/homerunner`.\n\nNow you can run `HOMERUNNER_SPAWN_HS_TIMEOUT_SECS=100 path/to/complement/homerunner` to start homerunner.\n\nWith homerunner running, you can now run the tests with:\n\n```shell-commands\nnpm run test:e2e\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatrix-org%2Fconference-bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatrix-org%2Fconference-bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatrix-org%2Fconference-bot/lists"}