{"id":20510575,"url":"https://github.com/shitcorp/extendabot","last_synced_at":"2026-04-20T01:31:10.615Z","repository":{"id":125297450,"uuid":"264566852","full_name":"shitcorp/Extendabot","owner":"shitcorp","description":"Extensible discord bot that implements a plugin system.","archived":false,"fork":false,"pushed_at":"2021-01-11T20:29:46.000Z","size":2466,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-16T08:45:49.769Z","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":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shitcorp.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-05-17T02:18:29.000Z","updated_at":"2021-03-20T20:30:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"58a0d918-73e5-457b-af7a-4dc74ad15a1a","html_url":"https://github.com/shitcorp/Extendabot","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/shitcorp%2FExtendabot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shitcorp%2FExtendabot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shitcorp%2FExtendabot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shitcorp%2FExtendabot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shitcorp","download_url":"https://codeload.github.com/shitcorp/Extendabot/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242114941,"owners_count":20074074,"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-15T20:30:04.267Z","updated_at":"2026-04-20T01:31:05.584Z","avatar_url":"https://github.com/shitcorp.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ExtendABot - The modular discord bot!\n## Concept of plugins\nExtendABot is a completely modular discord bot with a pluginmanager. With that pluginmanager you can enable or disable plugins for your server. ExtendABot has a very extensive API for plugin-creators.\n\n## Create a plugin\nCreating a plugin is super easy. All you need to do is to create a folder for your plugin in the `plugins`folder, and create an `index.js` file. That index file is your main/init file that the pluginmanager will read.\nExample:\n\u003e Index.js\n```js\nexports.plugin = {\n    name: \"MyPlugin\",\n    version: \"1.0\",\n    conf: {\n        version: \"1.0\",  // BOT version\n        perms: ['READ_MESSAGES', 'SEND_MESSAGES'],  // perms the bot needs to execute this plugin\n        repo: \"http://github.com\", // to display if error happens\n        author: \"MyName#1234\",\n        authordiscordid: \"MYID\"\n    },\n    help: {\n        // This info will be displayed in the global pluginmanager command\n        name: \"MyPlugin\",\n        desc: \"This is my own plugin!\",\n        category: \"Utility\"\n    }\n}\n```\nYou can also add commands with only adding a simple section to your index:\n```js\nexports.plugin = {\n    name: \"MyPlugin\",\n    version: \"1.0\",\n    cmds: {\n        example: {\n            run: async (client, message, args, level) =\u003e {\n                let cmd = require('./cmds/mycommand')\n                cmd.run(client, message, args, level)\n            },\n            conf: {\n                enabled: true,\n                guildOnly: true,\n                aliases: [],\n                permLevel: \"User\"\n            },\n            help: {\n                name: \"example\",\n                category: \"Utility\",\n                description: \"Example command\",\n                usage: \"example\"\n            }\n        }\n    },\n    conf: {\n        version: \"1.0\",  // BOT version\n        perms: ['READ_MESSAGES', 'SEND_MESSAGES'],  // perms the bot needs to execute this plugin\n        repo: \"http://github.com\", // to display if error happens\n        author: \"MyName#1234\",\n        authordiscordid: \"MYID\"\n    },\n    help: {\n        // This info will be displayed in the global pluginmanager command\n        name: \"MyPlugin\",\n        desc: \"This is my own plugin!\",\n        category: \"Utility\"\n    }\n}\n```\nExtendABot also supports Events:\n```js\nexports.plugin = {\n    name: \"MyPlugin\",\n    version: \"1.0\",\n    cmds: {\n        example: {\n            run: async (client, message, args, level) =\u003e {\n                let cmd = require('./cmds/mycommand')\n                cmd.run(client, message, args, level)\n            },\n            conf: {\n                enabled: true,\n                guildOnly: true,\n                aliases: [],\n                permLevel: \"User\"\n            },\n            help: {\n                name: \"example\",\n                category: \"Utility\",\n                description: \"Example command\",\n                usage: \"example\"\n            }\n        }\n    },\n    events: {\n        guildMemberAdd: {\n            run: async (client, member) =\u003e {\n                member.send(\"Welcome!\").catch(error =\u003e {\n                    client.logger.warn(`The user ${member.username} has their DM's disabled or blocked me, therefore I wasn't able to deliver my messages.`)\n                });\n            }\n        }\n    },\n    conf: {\n        version: \"1.0\",  // BOT version\n        perms: ['READ_MESSAGES', 'SEND_MESSAGES'],  // perms the bot needs to execute this plugin\n        repo: \"http://github.com\", // to display if error happens\n        author: \"MyName#1234\",\n        authordiscordid: \"MYID\"\n    },\n    help: {\n        // This info will be displayed in the global pluginmanager command\n        name: \"MyPlugin\",\n        desc: \"This is my own plugin!\",\n        category: \"Utility\"\n    }\n}\n```\n**Voila!** We now have made our very own ExtendABot plugin! You can play around with the API as much as you want since it's very customizable and modular.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshitcorp%2Fextendabot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshitcorp%2Fextendabot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshitcorp%2Fextendabot/lists"}