{"id":18540177,"url":"https://github.com/frustrated-programmer/webcomicdiscordposter","last_synced_at":"2025-06-19T11:36:06.017Z","repository":{"id":132509474,"uuid":"293179606","full_name":"Frustrated-Programmer/WebcomicDiscordPoster","owner":"Frustrated-Programmer","description":"A bot that pulls the comic from Dreamland Chronicles Comic, and posts them on the discord.","archived":false,"fork":false,"pushed_at":"2022-04-25T23:51:01.000Z","size":115,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-15T03:42:50.147Z","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":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Frustrated-Programmer.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":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-09-06T01:05:53.000Z","updated_at":"2022-02-03T22:39:59.000Z","dependencies_parsed_at":"2023-06-07T22:00:20.697Z","dependency_job_id":null,"html_url":"https://github.com/Frustrated-Programmer/WebcomicDiscordPoster","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Frustrated-Programmer/WebcomicDiscordPoster","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Frustrated-Programmer%2FWebcomicDiscordPoster","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Frustrated-Programmer%2FWebcomicDiscordPoster/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Frustrated-Programmer%2FWebcomicDiscordPoster/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Frustrated-Programmer%2FWebcomicDiscordPoster/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Frustrated-Programmer","download_url":"https://codeload.github.com/Frustrated-Programmer/WebcomicDiscordPoster/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Frustrated-Programmer%2FWebcomicDiscordPoster/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260743221,"owners_count":23055923,"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-11-06T19:53:12.257Z","updated_at":"2025-06-19T11:36:01.003Z","avatar_url":"https://github.com/Frustrated-Programmer.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Online Comic Poster for Discord\n\n### Setup\n * Make sure you have node installed.\n * Install the required dependencies `npm i`.\n * Make sure the code has permission can write to `data.json`.\n * Update `data.json` to have the key items.\n * Run `index.js` in a terminal via `node index.js`\n * go to your comic's domain page and find a way to access the latest comic every single time. (generally homepage) Then go into `websiteHandler.js` and edit:\n   * `getCurrentPageImgLink` - To grab the page's IMAGE url,\n   * `getCurrentPageDifferential` to extract the info from the page that tells it whether this page is different from the last(I recommend date).\n   * `getDownloadLocation` to tell the handler what is the link to extract the data from. (use the passed in object to store incrementals in case the link changes whenever a comic is posted, Eg: _comic/page1.html, comic/page2.html, comic/page3.html_)\n   * `comicWasPosted` to add to any increments in case website's link changes per comic. \n * *If you need help on the last step lemme know so I can help, it's a difficult step.*\n\n### data.json\n`data.json` needs to have these keys inside an object like so:\n```json\n{\n    \"key\":\"\",\n    \"admins\":[\"\"],\n    \"owners\": [\"\"],\n\t\"updateTimer\": \"\",\n    \"channelID\":\"\",\n    \"debugging\":true,\n\t\"useEmailHandler\": false,\n    \"host\": \"\",\n    \"port\": 0,\n    \"sender\": \"\",\n    \"receiver\": \"\",\n    \"auth\": {\n        \"user\": \"\",\n        \"pass\": \"\"\n    },\n    \"websiteHandlerData\": {},\n    \"pingEveryone\": 0\n}\n```\nAnd `key` and `channelID` ***have*** to have a value.\n - `key` The key to the Discord bot.\n - `admins` An array of Discord User IDs. (These are users who can run the 3 commands)\n - `owners` An array of Discord User IDs. (These are users who can run the eval command)\n - `updateTimer` After how many milliseconds should the bot check for the comic?. (86400000 = once per day)\n - `channelID` An ID to the channel that the bot will post the picture to.\n - `debugging` A boolean. Changes whether the bot logs what it's doing or not.\n - `useEmailHandler` Whether or not to try to send an email whenever the bot errors or something bad happens. \n - `host`,`port`,`sender`,`reciever`, `auth.user`, \u0026 `auth.pass` are only required if `useEmailHandler` is set to true. If so, Further instructions are supplied later.\n - `websiteHandlerData` can be whatever you need. It gets passed in to the websiteHandler for your customization, and is saved with every comic posted\n - `pingEveryone` can be 0 for no, 1 for yes, 2 to ghost ping everyone.\n ### Email Handler\n You can learn more about how to use the API I am using called [nodemailer](nodemailer.com/about\n ).\u003cbr\u003eIf you decide to have `useEmailHandler` in the `data.json` set to true, the following will need to be filled out depending on your transport method:\n  - `host` the website/server with email capabilities. Looks like `smtp.site.com` or `mail.site.com`\n  - `port` the port number the email server chose to expose. \n  - `sender` what to make the sender of the email appear like.\n  - `reciever` what email to send the email to. Can be multible emails separated by commas `,`\n  - `auth` The entire `auth` object is passed in as is to the webmailer. Most of the time `auth` is an object containing:\n    - `user` username to log into the webmailer\n    - `pass` password to log into the webmailer\n \n\n \n ### Commands\n The bot has 5 commands, (listed down below). To trigger one you need to start your message by pinging the bot, followed by the command.  Eg: `@Comic-Bot checkforComic` or `@Comic-Bot restart`. (commands are not case sensitive)\n - `ping` Will respond with a message saying how long the bot's been online for, and when it's next comic check is due.\n - `restart` Will restart JUST the discord bot.\n - `shutdown` Shuts down the entire code.\n - `checkForComic` will check for a new comic and if one exists it will post the comic.\n - `eval` will run any code you post AFTER the eval command.\n - `notif` | `notify` will notify owners of the bot via email(if setup) and DM something is happening. Useful for emergencies or bug-reports.\n - `help` | `about` | `credits` Will share info about the bot.\n \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrustrated-programmer%2Fwebcomicdiscordposter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffrustrated-programmer%2Fwebcomicdiscordposter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrustrated-programmer%2Fwebcomicdiscordposter/lists"}