{"id":23057797,"url":"https://github.com/keybuk/discord-calendar-bot","last_synced_at":"2025-04-03T06:15:27.422Z","repository":{"id":45199976,"uuid":"162213254","full_name":"keybuk/discord-calendar-bot","owner":"keybuk","description":"Scheduling is hard","archived":false,"fork":false,"pushed_at":"2022-02-13T21:47:40.000Z","size":167,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-08T20:11:21.185Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/keybuk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-12-18T01:36:56.000Z","updated_at":"2022-10-02T20:41:53.000Z","dependencies_parsed_at":"2022-09-22T17:51:41.278Z","dependency_job_id":null,"html_url":"https://github.com/keybuk/discord-calendar-bot","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keybuk%2Fdiscord-calendar-bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keybuk%2Fdiscord-calendar-bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keybuk%2Fdiscord-calendar-bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keybuk%2Fdiscord-calendar-bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/keybuk","download_url":"https://codeload.github.com/keybuk/discord-calendar-bot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246944384,"owners_count":20858772,"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","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-12-16T02:13:38.597Z","updated_at":"2025-04-03T06:15:27.359Z","avatar_url":"https://github.com/keybuk.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"This has been written to serve a single Discord guild, paired to a single Google\nCalendar shared by all channels in that guild.\n\nNote that this is not a \"hands free\" or \"simple\" setup, and requires working\nknowledge of running Discord bots and Google APIs. If these are outside your\nexperience, other projects may be better suited.\n\n# Configuration\n\nThe bot needs a `config.json` and `token.json` file in the working directory.\nIt'll create `persist`, `persist-events`, and `persist-rsvp` directories to\nstore its state.\n\n## Example `config.json`\n```\n{\n    \"calendarId\": \"...\",\n    \"discordClientId\": \"...\",\n    \"discordSecret\": \"...\",\n    \"discordToken\": \"...\",\n    \"channel\": \"...\",\n    \"refreshInterval\": 60000,\n    \"limit\": 7,\n    \"prefix\": \"!\"\n}\n```\n\n## Example `token.json`\n```\n{\n    \"access_token\": \"...\",\n    \"refresh_token\": \"...\"\n    \"scope\": \"https://www.googleapis.com/auth/calendar.events\"\n    \"token_type\": \"Bearer\",\n    \"expiry_date\": ...\n}\n```\n# Discord Bot Setup\n\nYou'll need to setup a Discord Bot instance, and fill in the `discordClientId`,\n`discordSecret`, and `discordToken` fields in the `config.json`.\n\n# Google Calendar Setup\n\nYou'll need to setup a Google Calendar and authenticate the bot for API access,\nfilling in the `token.json` with the results and the `calendarId` in\n`config.json`\n\n# Other setup\n\nPut the name of the general Discord channel (without `#`) in `channel`. You can\nadjust the `prefix` for bot commands, and the `refreshInterval` for sync with\nGoogle (leave it at `60000`, really).\n\nThe `limit` field is the number of days before an event that the bot will\nadd invites if not already present, and even if the event is not the next one\nfor a given role.\n\n# Games (Roles and Channels)\n\nThe bot assumes that the calendar is used to schedule a number of concurrent\ngames, and that each game has an associated Discord Role and Channel with\na 1:1 map between each of them.\n\nTo associate a Role with a channel, use:\n```\n!channel @Game #game\n```\n\nTo specify which game a calendar event is associated with, include the role\nname in the description as:\n```\nInvite: Game\n```\n\n# Players\n\nThe bot will track invites through the reactions to the Discord message, or\ninterested marks on the Discord scheduled event. In Google they will appear as\n`discord@Username`.\n\nThis can be changed to the user's Google Calendar address, and real invites\nsent via the calendar.\n\nTo associate a Player's Discord user with their Google Calendar address, use:\n```\n!google @User user@gmail.com\n```\n\n# Calendar Events\n\nIn addition to `Invite:` the bot will also recognize `Image:` as a URL to an\nimage to include in the invite. Other text is added to the description of the\nevent.\n\n```\nInvite: Game\nImage: http://some/cool/image.jpg\n\nDescription of the game\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeybuk%2Fdiscord-calendar-bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkeybuk%2Fdiscord-calendar-bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeybuk%2Fdiscord-calendar-bot/lists"}