Compare commits

...
231 Commits
Author SHA1 Message Date
ItzEmerald 951cedb190 Update LICENSE 2020-09-27 01:18:01 +01:00
ItzEmerald 11442f320d Update index.js 2020-09-27 01:14:37 +01:00
ItzEmerald 33df21f656 Update supportbot-config.yml 2020-09-27 01:13:56 +01:00
ItzEmerald 19ab208678 Merge pull request #40 from real2two/patch-1
Add "Delete Messages" options on the configuration file.
2020-09-27 01:06:29 +01:00
ItzEmerald 59b9651575 Merge pull request #42 from real2two/patch-3
Fix prefix on playing status.
2020-09-27 01:06:06 +01:00
ItzEmerald c1c1f1767a Merge pull request #44 from 1tzemerald/dependabot/npm_and_yarn/node-fetch-2.6.1
Bump node-fetch from 2.6.0 to 2.6.1
2020-09-27 01:05:42 +01:00
dependabot[bot] dda8a5180c Bump node-fetch from 2.6.0 to 2.6.1
Bumps [node-fetch](https://github.com/bitinn/node-fetch) from 2.6.0 to 2.6.1.
- [Release notes](https://github.com/bitinn/node-fetch/releases)
- [Changelog](https://github.com/node-fetch/node-fetch/blob/master/docs/CHANGELOG.md)
- [Commits](https://github.com/bitinn/node-fetch/compare/v2.6.0...v2.6.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-27 00:04:16 +00:00
ItzEmerald 34d558412f Update package.json 2020-09-27 01:02:51 +01:00
ItzEmerald be77ee1903 Update newticket.js 2020-09-27 01:00:54 +01:00
ItzEmerald fc571d6c73 Update README.md 2020-09-09 14:04:46 +01:00
Two 7ca5a97535 Update supportbot-config.yml 2020-08-02 10:25:12 -04:00
ItzEmerald 730239ba8d Merge branch 'master' of https://github.com/1tzemerald/SupportBot 2020-08-02 13:53:17 +01:00
ItzEmerald 9069e23188 GuildMemberRemove Fix 2020-08-02 13:53:14 +01:00
Two 366203fe21 Update addon-example.js 2020-07-27 10:45:25 -04:00
Two f23f15c972 Update announce.js 2020-07-27 10:44:06 -04:00
Two 8432290a70 Update botSay.js 2020-07-27 10:43:59 -04:00
Two ceddd503f8 Update close.js 2020-07-27 10:43:51 -04:00
Two 51ad35f72b Update help.js 2020-07-27 10:43:45 -04:00
Two 5631b24a14 Update links.js 2020-07-27 10:43:36 -04:00
Two f9da25643d Update newticket.js 2020-07-27 10:43:30 -04:00
Two 75bed3f5dd Update ping.js 2020-07-27 10:43:25 -04:00
Two d4576dfc21 Update removeUser.js 2020-07-27 10:43:17 -04:00
Two 31bad3c2e5 Update suggest.js 2020-07-27 10:43:11 -04:00
Two a3c0e81e04 Update addUser.js 2020-07-27 10:42:53 -04:00
Two b5cf721efb Update supportbot-config.yml 2020-07-27 10:42:39 -04:00
Two 95063398aa Update message.js 2020-07-27 10:39:25 -04:00
ItzEmerald 2da25c5566 Update README.md 2020-07-26 12:57:08 +01:00
ItzEmerald a72c1ab380 Merge pull request #39 from 1tzemerald/SupportBot-6.0
Support bot 6.0
2020-07-23 20:20:32 +01:00
ItzEmerald 87b9301e20 Update help.js 2020-07-23 20:16:32 +01:00
ItzEmerald d0a6bed727 Delete BotSay.js 2020-07-23 17:40:31 +01:00
ItzEmerald 29881fbf28 Merge branch 'SupportBot-6.0' of https://github.com/1tzemerald/SupportBot into SupportBot-6.0 2020-07-15 18:42:13 +01:00
ItzEmerald 4f05ad6546 SupportBot 6.0 BETA 1 2020-07-15 18:42:07 +01:00
doge 36fc9aae6c Update removeUser.js 2020-07-15 12:05:39 -04:00
doge fb3f87c685 Update addUser.js 2020-07-15 12:05:24 -04:00
doge a4c0eeb9b3 Update addUser.js 2020-07-15 11:57:32 -04:00
doge c64f249fd0 Update removeUser.js 2020-07-15 11:57:14 -04:00
doge 48b542293f Update addUser.js 2020-07-15 11:56:52 -04:00
doge 95e92970c9 Update removeUser.js 2020-07-15 11:44:17 -04:00
doge afdb16da07 Update addUser.js 2020-07-15 11:44:01 -04:00
doge 0a230cfab9 fix remove 2020-07-15 11:37:58 -04:00
doge c752a07ad0 fix adduser 2020-07-15 11:37:17 -04:00
ItzEmerald cc5a6b7317 Update BotSay.js 2020-07-15 02:20:05 +01:00
ItzEmerald d93991ad86 Merge branch 'SupportBot-6.0' of https://github.com/1tzemerald/SupportBot into SupportBot-6.0 2020-07-15 02:20:03 +01:00
ItzEmerald 5c98376a8c RolePerms Update 2020-07-15 02:16:15 +01:00
ItzEmerald 28699f0ff0 Updated 2020-07-14 19:42:46 +01:00
ItzEmerald e3576b17b1 Updated 2020-07-14 19:17:40 +01:00
ItzEmerald 17c49b2b03 Merge branch 'SupportBot-6.0' of https://github.com/1tzemerald/SupportBot into SupportBot-6.0 2020-07-11 13:19:19 +01:00
ItzEmerald dcc00d8d1f Update 2020-07-11 13:17:57 +01:00
ItzEmerald 05a772eee2 Create removeUser.js 2020-07-10 20:56:40 +01:00
ItzEmerald 59dd291dc6 Update addUser.js 2020-07-10 20:55:02 +01:00
ItzEmerald f0a791e354 Update README.md 2020-07-10 20:48:41 +01:00
ItzEmerald 94db6cff7b Create addUser.js 2020-07-10 18:55:03 +01:00
ItzEmerald 72a02bf6d2 Close.js updated 2020-07-04 00:54:34 +01:00
ItzEmerald cf99209887 Close Ticket 2020-06-24 09:50:14 +01:00
ItzEmerald ff7ed49905 guildMemberRemove added 2020-06-21 15:56:16 +01:00
ItzEmerald ecd17a51df guildMemberAdd Updated 2020-06-21 12:36:48 +01:00
ItzEmerald 63b08f8c12 guildMemberAdd Updated 2020-06-20 16:10:27 +01:00
ItzEmerald 3077772aff Merge branch 'SupportBot-6.0' of https://github.com/1tzemerald/SupportBot into SupportBot-6.0 2020-06-20 15:46:18 +01:00
ItzEmerald f40aa9ed14 push 2020-06-20 13:02:46 +01:00
ItzEmerald 4ae6dc3a69 Update guildMemberAdd.js 2020-06-20 00:18:17 +01:00
ItzEmerald bdb8389d8d Merge branch 'SupportBot-6.0' of https://github.com/1tzemerald/SupportBot into SupportBot-6.0 2020-06-20 00:11:02 +01:00
ItzEmerald f7254c7ec7 Push 2020-06-20 00:10:38 +01:00
ItzEmerald 3701156362 Merge pull request #35 from real2two/patch-20
Update newticket.js
2020-06-19 23:42:03 +01:00
Two 575d25f5ad Update newticket.js 2020-06-16 21:54:40 -04:00
Two 698b82c7d3 Update newticket.js 2020-06-15 21:29:31 -04:00
ItzEmerald eaa9da6d2e 6.0-Dev Edition 2020-06-15 23:58:37 +01:00
ItzEmerald ca7294a0e3 Delete supportbot-config.yml 2020-06-15 23:47:10 +01:00
ItzEmerald 5281ffce60 overwrite Permissions to updateOverwrite 2020-06-12 23:30:34 +01:00
ItzEmerald 2f84fd3b33 overwritePermissions to updateOverwrite 2020-06-12 23:30:01 +01:00
ItzEmerald bef270da74 Update LICENSE 2020-05-19 00:40:47 +01:00
ItzEmerald bdf839ffca Merge pull request #31 from 1tzemerald/add-license-1
Create LICENSE
2020-05-10 00:42:44 +01:00
ItzEmerald b1b2ead0d8 Create LICENSE 2020-05-10 00:42:31 +01:00
ItzEmerald 0b74473c64 Delete LICENSE 2020-05-10 00:40:43 +01:00
lynxgian 2fb189cf5c updated Readme.md 2020-05-07 19:32:16 -04:00
lynxgian 24a29639e9 Update README.md 2020-05-07 19:30:53 -04:00
ItzEmerald 50258dc359 Update index.js 2020-04-21 20:20:42 +01:00
ItzEmerald d9c6b7698f Update index.js 2020-04-21 19:37:28 +01:00
ItzEmerald f042f34ae2 Update index.js 2020-04-21 19:24:15 +01:00
ItzEmerald c087edc14f Update suggest.js 2020-04-18 22:49:03 +01:00
ItzEmerald d96ccc3265 Update add.js 2020-04-17 02:59:25 +01:00
ItzEmerald 018ef19efd Update remove.js 2020-04-17 02:56:10 +01:00
ItzEmerald 159317a15a Update remove.js 2020-04-17 02:55:25 +01:00
ItzEmerald 34583c96bf Update add.js 2020-04-17 02:54:20 +01:00
ItzEmerald 887d3d3ab4 Update ticket.js 2020-04-17 02:48:38 +01:00
ItzEmerald f2de39de33 Updated 5.2 2020-04-16 16:43:16 +01:00
ItzEmerald 8173c31a60 Update supportbot-config.yml 2020-04-15 16:18:31 +01:00
ItzEmerald 80a2871741 Update ping.js 2020-04-15 15:08:13 +01:00
ItzEmerald 3b37e9c420 Updated say.js
Updated RichEmbed to MessageEmbed
2020-04-15 15:07:20 +01:00
ItzEmerald 730ba561bc Update index.js 2020-04-15 15:05:56 +01:00
ItzEmerald 4d7ddc9d6f Update ping.js 2020-04-14 22:45:51 +01:00
ItzEmerald 680f71a602 Merge pull request #15 from real2two/patch-14
Changed all RichEmbed to MessageEmbed.
2020-04-08 17:53:50 +01:00
ItzEmerald 170a7b50b9 Merge pull request #16 from real2two/patch-13
Changed all RichEmbed to MessageEmbed.
2020-04-08 17:53:14 +01:00
ItzEmerald 805c48c1bb Merge pull request #17 from real2two/patch-15
Changed all RichEmbed to MessageEmbed.
2020-04-08 17:53:03 +01:00
ItzEmerald 7d92ed51bb Merge pull request #18 from real2two/patch-16
Changed all RichEmbed to MessageEmbed.
2020-04-08 17:52:49 +01:00
ItzEmerald f849897f29 Merge pull request #19 from real2two/patch-10
Changed all RichEmbed to MessageEmbed.
2020-04-08 17:52:32 +01:00
ItzEmerald 75e0f1ad1e Merge pull request #20 from real2two/patch-11
Changed all RichEmbed to MessageEmbed.
2020-04-08 17:52:15 +01:00
ItzEmerald 2f015aff2b Merge pull request #21 from real2two/patch-12
Changed all RichEmbed to MessageEmbed.
2020-04-08 17:52:03 +01:00
ItzEmerald bb322adb2f Merge pull request #22 from real2two/patch-7
Changed all RichEmbed to MessageEmbed.
2020-04-08 17:51:14 +01:00
ItzEmerald 6ee0981885 Merge pull request #23 from real2two/patch-8
Changed all RichEmbed to MessageEmbed.
2020-04-08 17:51:02 +01:00
ItzEmerald 877fb0f201 Merge pull request #24 from real2two/patch-9
Changed all RichEmbed to MessageEmbed.
2020-04-08 17:50:39 +01:00
ItzEmerald ded4b9094a Merge pull request #25 from real2two/patch-4
Changed all RichEmbed to MessageEmbed.
2020-04-08 17:50:07 +01:00
ItzEmerald 36ab931998 Merge pull request #26 from real2two/patch-5
Changed all RichEmbed to MessageEmbed.
2020-04-08 17:49:54 +01:00
ItzEmerald 20baddfcca Merge pull request #27 from real2two/patch-6
Changed all RichEmbed to MessageEmbed.
2020-04-08 17:49:36 +01:00
ItzEmerald d180c147db Merge pull request #28 from real2two/patch-1
Changed all RichEmbed to MessageEmbed.
2020-04-08 17:49:20 +01:00
ItzEmerald 86fa91cc52 Merge pull request #29 from real2two/patch-2
Changed all RichEmbed to MessageEmbed.
2020-04-08 17:48:53 +01:00
ItzEmerald b8c12a0307 Merge pull request #30 from real2two/patch-3
Changed all RichEmbed to MessageEmbed.
2020-04-08 17:48:24 +01:00
Two eff2f9c195 Changed all RichEmbed to MessageEmbed.
This is order to add discord.js v12 support.
2020-04-06 18:15:27 -04:00
Two 8a8597afef Changed all RichEmbed to MessageEmbed.
This is order to add discord.js v12 support.
2020-04-06 18:15:23 -04:00
Two 067e619488 Changed all RichEmbed to MessageEmbed.
This is order to add discord.js v12 support.
2020-04-06 18:15:17 -04:00
Two f7f8bc8c55 Changed all RichEmbed to MessageEmbed.
This is order to add discord.js v12 support.
2020-04-06 18:15:07 -04:00
Two 0c71fd7e59 Changed all RichEmbed to MessageEmbed.
This is order to add discord.js v12 support.
2020-04-06 18:15:06 -04:00
Two 5b2bd21c06 Changed all RichEmbed to MessageEmbed.
This is order to add discord.js v12 support.
2020-04-06 18:14:57 -04:00
Two 9ac68f68e2 Changed all RichEmbed to MessageEmbed.
This is order to add discord.js v12 support.
2020-04-06 18:14:42 -04:00
Two aa32f00b0d Changed all RichEmbed to MessageEmbed.
This is order to add discord.js v12 support.
2020-04-06 18:14:35 -04:00
Two bd5f5dffad Changed all RichEmbed to MessageEmbed.
This is order to add discord.js v12 support.
2020-04-06 18:14:28 -04:00
Two 645ad63f4f Changed all RichEmbed to MessageEmbed.
This is order to add discord.js v12 support.
2020-04-06 18:14:23 -04:00
Two c83c6afecc Changed all RichEmbed to MessageEmbed.
This is order to add discord.js v12 support.
2020-04-06 18:14:18 -04:00
Two 689a191d4c Changed all RichEmbed to MessageEmbed.
This is order to add discord.js v12 support.
2020-04-06 18:14:10 -04:00
Two 5767ba0de5 Changed all RichEmbed to MessageEmbed.
This is order to add discord.js v12 support.
2020-04-06 18:13:57 -04:00
Two cdf78f2598 Changed all RichEmbed to MessageEmbed.
This is order to add discord.js v12 support.
2020-04-06 18:13:51 -04:00
Two d23f46ad9e Changed all RichEmbed to MessageEmbed.
This is order to add discord.js v12 support.
2020-04-06 18:11:48 -04:00
Two 8453fa5007 Changed all RichEmbed to MessageEmbed.
This is order to add discord.js v12 support.
2020-04-06 18:10:32 -04:00
ItzEmerald 0bd990a9e3 updated index.js 2020-03-31 09:57:39 +01:00
ItzEmerald 9c8ee1471b updated version number 2020-03-31 09:56:09 +01:00
ItzEmerald 87262e82a3 Update forceclose.js 2020-03-31 00:15:10 +01:00
ItzEmerald 953db88ed2 Update close.js 2020-03-31 00:14:47 +01:00
doge a44bb949eb Merge pull request #13 from 1tzemerald/version-5.2
Update README.md
2020-03-12 20:28:49 -04:00
doge 9d11369059 Update README.md 2020-03-12 20:28:02 -04:00
ItzEmerald 8c92f39349 Delete package-lock.json 2020-02-23 13:13:31 +00:00
ItzEmerald bce9d733d3 Update package.json 2020-02-23 13:13:12 +00:00
ItzEmerald 525c216401 Update suggest.js 2020-02-09 13:14:10 +00:00
ItzEmerald c145e9f11d Update README.md 2020-02-04 10:42:59 +00:00
ItzEmerald 53700003f1 Update README.md 2020-02-04 10:41:12 +00:00
ItzEmerald 03094a4c35 Update README.md 2020-02-04 10:39:09 +00:00
ItzEmerald 934ebed24f Update ticket.js 2020-02-02 12:06:04 +00:00
ItzEmerald 9f469e1637 Update supportbot-config.yml 2020-01-30 21:03:17 +00:00
ItzEmerald 77fe39774d Update close.js 2020-01-30 21:02:35 +00:00
ItzEmerald 186d688ec8 Delete setup.js 2020-01-30 20:56:37 +00:00
ItzEmerald de3181b5c7 Update tickets.json 2020-01-29 21:43:06 +00:00
ItzEmerald 6d53234f7a Update supportbot-config.yml 2020-01-29 21:42:37 +00:00
ItzEmerald b0d3673f4b Update close.js 2020-01-29 21:41:56 +00:00
ItzEmerald e40083f585 Add files via upload 2020-01-29 21:40:44 +00:00
ItzEmerald f7b702fa29 Update ticket.js 2020-01-29 20:06:28 +00:00
ItzEmerald 5089a19a56 Update TicketNumber.js 2020-01-29 20:05:34 +00:00
ItzEmerald d77e9842aa Update TicketNumber.js 2020-01-29 19:59:44 +00:00
ItzEmerald 88ae76a25a Update ticket.js 2020-01-29 19:59:14 +00:00
ItzEmerald 9b0b0d10a1 Update ticket.js 2020-01-29 19:08:00 +00:00
ItzEmerald 68340a8b02 Create tickets.json 2020-01-29 18:59:22 +00:00
ItzEmerald d14f0966d5 Update TicketNumber.js 2020-01-29 18:58:58 +00:00
ItzEmerald e4b83f28c4 Update TicketNumber.js 2020-01-29 18:57:22 +00:00
ItzEmerald 1925deec90 Create TicketNumber.js 2020-01-29 18:55:32 +00:00
ItzEmerald e9ba960b29 Delete utils 2020-01-29 18:52:23 +00:00
ItzEmerald 821f0f5b60 Create utils 2020-01-29 18:52:13 +00:00
ItzEmerald 8fa8915673 Update README.md 2020-01-29 18:34:02 +00:00
ItzEmerald 5405aa469e Update README.md 2020-01-29 18:33:42 +00:00
ItzEmerald cfa50b4e8c Update README.md 2020-01-29 18:33:17 +00:00
ItzEmerald c5014baeb4 Update README.md 2020-01-29 18:32:09 +00:00
ItzEmerald c14f120ec2 Update README.md 2020-01-29 18:27:10 +00:00
ItzEmerald b72fcf39da Update help.js 2020-01-26 23:53:53 +00:00
ItzEmerald 6da3b0cba0 Update README.md 2020-01-26 22:47:39 +00:00
ItzEmerald 752387a02d Update README.md 2020-01-26 22:47:05 +00:00
ItzEmerald 32d3e1b957 Update README.md 2020-01-26 22:46:47 +00:00
ItzEmerald a029dff202 Update README.md 2020-01-26 22:44:45 +00:00
ItzEmerald 89e1b85a56 Delete settings.json 2020-01-26 22:38:25 +00:00
ItzEmerald 4350eb709c Delete old.json 2020-01-26 22:38:13 +00:00
ItzEmerald 2b1b6e916e Updated SupportBot
Pre-Release - 5.1.0
2020-01-26 22:35:45 +00:00
ItzEmerald 3f6f9045bd Update announce.js 2020-01-25 16:59:35 +00:00
ItzEmerald 8294496faa Update add.js 2020-01-25 16:56:56 +00:00
ItzEmerald 9f58118ecd Update supportbot-config.yml 2020-01-25 16:51:30 +00:00
ItzEmerald 3ba9d42587 Delete terminal.sh 2020-01-25 14:20:08 +00:00
ItzEmerald e496a5f3d0 Delete terminal.bat 2020-01-25 14:19:45 +00:00
ItzEmerald 04e2bb29b0 Update supportbot-config.yml 2020-01-25 14:09:40 +00:00
ItzEmerald 131a7a015c Update supportbot-config.yml 2020-01-25 14:03:20 +00:00
ItzEmerald 6f430f5f14 Create supportbot-config.yml 2020-01-25 13:57:23 +00:00
ItzEmerald 0154c106ef updated index.js 2020-01-25 13:55:33 +00:00
ItzEmerald 04de6e6fc0 Update index.js 2020-01-25 13:48:02 +00:00
ItzEmerald 2b17e5f842 Update index.js 2020-01-25 13:42:44 +00:00
ItzEmerald 0dc8c1e68a updated announce.js
cleaned up the code + updated the command executed message
2020-01-25 13:37:25 +00:00
ItzEmerald 67b291eb09 Update add.js 2020-01-25 13:30:13 +00:00
ItzEmerald d7865a5a4e Update add.js 2020-01-25 13:28:01 +00:00
ItzEmerald d1809587a8 Updated add.js
Cleaned and updated the code within the file alongside the console.log for executing the command.
2020-01-25 13:20:44 +00:00
ItzEmerald 64ec4dfd53 Update LICENSE 2020-01-22 22:44:36 +00:00
ItzEmerald 6e07d21a3d Create someaddon.json 2020-01-22 22:42:10 +00:00
ItzEmerald 018e47bd53 Update default-addon.js 2020-01-22 22:41:33 +00:00
ItzEmerald 065a2e9347 Update help.js 2020-01-05 21:37:08 +00:00
ItzEmerald b53307c7fd Update ticket.js 2020-01-05 16:33:31 +00:00
ItzEmerald e4cc0d960e Update ticket.js 2020-01-05 15:33:23 +00:00
ItzEmerald 3336824df7 Update close.js 2020-01-05 15:22:50 +00:00
TommyTran732 166173d53c Update entrypoint.sh 2020-01-03 04:40:13 -05:00
TommyTran732 45da2d7924 Create entrypoint.sh 2020-01-02 11:51:19 -05:00
TommyTran732 af14a65ef5 Create Dockerfile 2020-01-02 11:50:14 -05:00
ItzEmerald 9049a4b9ad Update rename.js 2019-12-11 18:17:00 +00:00
ItzEmerald 2f4873ab9a Update settings.json 2019-12-07 13:08:34 +00:00
ItzEmerald 0fb25d71dc Update rename.js 2019-12-03 23:24:43 +00:00
ItzEmerald 34b6901434 Update remove.js 2019-12-03 23:24:22 +00:00
ItzEmerald a90b43aba3 Update add.js 2019-12-03 23:24:01 +00:00
ItzEmerald 0ac5c2c300 Update forceclose.js 2019-12-03 23:23:33 +00:00
ItzEmerald 6290fee7bd Update close.js 2019-12-03 23:22:54 +00:00
ItzEmerald 320992f3fa Update ticket.js 2019-12-03 23:17:47 +00:00
ItzEmerald bd714f0c93 Update ticket.js 2019-12-03 23:15:52 +00:00
ItzEmerald 45d3867c1f Update ticket.js 2019-12-03 23:13:56 +00:00
ItzEmerald deafa66565 Update settings.json 2019-12-03 23:13:02 +00:00
ItzEmerald ce8fcdaa7a Update settings.json 2019-12-03 23:11:58 +00:00
ItzEmerald b83965c144 Update ticket.js 2019-12-03 23:10:41 +00:00
ItzEmerald 2505a8cab8 Created MIT License 2019-12-03 21:41:34 +00:00
ItzEmerald 21e598bb31 Delete LICENSE 2019-12-03 21:39:11 +00:00
ItzEmerald ee2f3c0dfc Created GNU License 2019-12-03 21:32:00 +00:00
ItzEmerald 197bda14b8 Update rename.js 2019-11-29 22:34:57 +00:00
ItzEmerald d416c2e421 Update README.md 2019-11-18 16:12:28 +00:00
ItzEmerald 6bc2e669e4 Update README.md 2019-11-18 16:12:13 +00:00
ItzEmerald 9accb65256 Update README.md 2019-11-18 16:11:23 +00:00
ItzEmerald d9212584ca Update README.md 2019-11-18 16:10:19 +00:00
ItzEmerald 1a7effb422 Update README.md 2019-11-18 16:09:37 +00:00
ItzEmerald 1480435f15 Update index.js 2019-11-18 15:53:02 +00:00
ItzEmerald 64c6a97657 Update index.js 2019-11-18 15:49:36 +00:00
ItzEmerald 7ae2ff9837 Update settings.json 2019-11-18 15:49:21 +00:00
ItzEmerald f19dec405d Updated settings.json 2019-11-18 15:29:33 +00:00
ItzEmerald bbd4e9d162 Update ticket.js 2019-11-17 22:24:05 +00:00
ItzEmerald 58deff0869 Updated close.js
Added ticket transcripts
2019-11-17 21:27:13 +00:00
ItzEmerald 628632f43e Update forceclose.js 2019-11-15 21:54:32 +00:00
ItzEmerald 436586117c Update close.js 2019-11-15 21:53:39 +00:00
ItzEmerald 7234ec728c Update close.js 2019-11-15 20:43:29 +00:00
ItzEmerald fc4d68be39 Update forceclose.js 2019-11-15 20:31:58 +00:00
ItzEmerald bcf2df4bff Update close.js 2019-11-15 20:27:10 +00:00
ItzEmerald 70a469a951 Update settings.json
Added settings for transcripts
2019-11-15 20:25:43 +00:00
ItzEmerald 981995cb32 Merge pull request #7 from iJosGCS/patch-1
Update close.js
2019-11-15 20:00:14 +00:00
Joseph Gonzalo 406c7d368b Update close.js 2019-11-15 13:58:24 -06:00
ItzEmerald 5c266d8b8d Update README.md 2019-11-01 20:27:24 +00:00
Joseph Gonzalo 4f5b94a491 Update README.md 2019-10-17 17:08:13 -06:00
ItzEmerald 284c83cc1d Update help.js 2019-09-28 17:30:57 +01:00
RedstoneGamez 23f06af202 Update README.md 2019-09-07 14:59:59 -03:00
45 changed files with 1439 additions and 1741 deletions

No files matched your search

Vendored
BIN
View File
Binary file not shown.
-2
View File
@@ -1,2 +0,0 @@
# Auto detect text files and perform LF normalization
* text=auto
-76
View File
@@ -1,76 +0,0 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# TypeScript v1 declaration files
typings/
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
# parcel-bundler cache (https://parceljs.org/)
.cache
# next.js build output
.next
# nuxt.js build output
.nuxt
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless
# FuseBox cache
.fusebox/
+18
View File
@@ -0,0 +1,18 @@
FROM node:alpine
MAINTAINER Thien Tran, <contact@thientran.io>
RUN apk update \
&& apk upgrade
RUN apk add --no-cache git && \
adduser -D -h /home/container container
# Ensure UTF-8
ENV LANG en_US.UTF-8
ENV LC_ALL en_US.UTF-8
WORKDIR /home/container
COPY ./entrypoint.sh /entrypoint.sh
CMD ["/bin/ash", "/entrypoint.sh"]
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2020 Emerald SRV
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+9 -129
View File
@@ -1,135 +1,15 @@
<h1 align="center">SupportBot v4.0.1</h1> ![SupportBot](https://i.imgur.com/OFO3XB2.png)
<h4 align="center">A Self Hosted discord application</h4>
<p align="center"> SupportBot the #1 self-hosted discord ticket system with any customizations and features to help make your support system look clean, tidy and professional. It's self-hosted! No need to use someone's public discord bot thats used in a handful of servers. Create, Configure & Use your own discord bot installed with SupportBot.
<a href="https://discord.gg/hmWgxdF">
<img src="https://discordapp.com/api/guilds/516345301985132552/widget.png?style=shield" alt="Discord Server">
</a>
<img src="https://img.shields.io/badge/Made%20with-NodeJS-blue.svg" alt="Made with NodeJS">
<img src="https://img.shields.io/github/release/EmeraldRusher/SupportBot.svg" alt="GitHub release">
<img src="https://img.shields.io/github/package-json/dependency-version/EmeraldRusher/SupportBot/discord.js.svg" alt="GitHub package.json dependency version (prod)">
</p>
SupportBot is a free & open source discord bot for your server that has the capability to control & manage your servers support. ### SupportBot Compatibility
| Version | Supported | Status | > Anything older than v6 we will no longer be supporting, However our terms & conditions still remain valid for all copies of our product "SupportBot".
| ------- | ------------------ |--------------------|
| 1.x | 🚫 | Discontinued |
| 2.x | 🚫 | Discontinued |
| 3.x | ✔️ | Supported |
| 4.x | ✔️ | Supported |
| Premium | ❌ | Not released yet |
# Getting Started |---------|---------|
Firstly you will need to download the resource, Once you have downloaded the resource open a new tab in your browser and go to https://discordapp.com/developers/applications/. Create a new application and then open your app and select bot and then create your bot. Copy the bot token and paste it where it says ``"token": "BOT TOKEN HERE",`` in the ``settings.json`` file. | Version | |
|---------|---------|
# Invite the bot | 6.0. | ✅ |
Head back to discord developers portal where your application is and head into the ``OAuth`` tab and select bot and then below select ``Administrator`` then copy the link and paste into your browser and it should as your to invite the bot to a server. |---------|---------|
# Help
If you don't understand something, you are experiencing problems, or you just need a gentle nudge in the right direction, please don't hesitate to join our official [Emerald Services Server](https://discord.gg/u47MQJ).
# Configurating SupportBot
Once you have setup your discord application such as invited the bot and added your bot token to the ``settings.json`` we can begin configurating your bot. Firstly open up the ``settings.json`` file and you will see loads of different things to config. You will see the following below:
```
{
"SupportBot": "v4.0.0",
"token": "BOT_TOKEN_HERE",
"prefix": "!",
"botname": "SupportBot",
"colour": "#13bd2a",
"footer": "Support Bot, By Emerald Services",
"BotStatus": "Support Bot",
"staff": "Staff",
"support": "Support",
"everyone": "@everyone",
"Auto_Role": "Member",
"LINKS": {
"Discord": "https://discord.gg/",
"Twitter": "https://twitter.com/",
"Website": "https://example.com/",
"AddMore": "AddMoreIfYouWant"
},
"LINKS_TITLE": "SupportBot Links",
"category": "Tickets",
"Ticket_Message": "Your support ticket has been opened successfully\nPlease allow us some time to reach out to you.",
"Ticket_Logs": "ticket-logs",
"Default_Ticket_Reason": "No Subject",
"Ticket_React_Message": ":mailbox: React to create your support ticket.",
"Commands_Log_Title": "SupportBot Logs",
"Command_Log_Channel": "command-logs",
"Announcement_Title": "SupportBot Announcement",
"Announcement_Channel": "announcements",
"Announcement_Tag_Role": "@everyone",
"Welcome_Message": "Welcome to the server!",
"Welcome_Channel": "welcome",
"Leave_Message": "Thank you for visiting us!",
"Leave_Channel": "welcome",
"Poll_Channel": "polls",
"Poll_Title": "📊 Polls",
"Reaction_Poll_1": "✅",
"Reaction_Poll_2": "❎",
"Suggestion_Title": "SupportBot Suggestions",
"Suggestion_Channel": "suggestions",
"suggestyes": "✅",
"suggestno": "❎",
"Report_Channel": "reports",
"Report_Title": "SupportBot Report",
"Announcement_Command": "announce",
"Say_Command": "say",
"Suggest_Command": "suggest",
"Ping_Command": "ping",
"Ticket_Command": "ticket",
"Remove_Command": "remove",
"Add_Command": "add",
"Close_Command": "close",
"Forceclose_Command": "forceclose",
"Rename_Command": "rename",
"Help_Command": "help",
"Link_Command": "links",
"Lockchat_Command": "lock",
"UnLockchat_Command": "unlock",
"Poll_Command": "poll",
"Report_Command": "report"
}
```
# Contributors List
<p>
<a href="https://github.com/iJosGCS">
<img src="https://cdn.discordapp.com/avatars/199237487648833556/cdd7d976b75698b19e3c6b64e1dcdceb.png?size=32" alt="iJosGCS Profile">
<strong>@iJosGCS</strong>
</a>
</p>
<p>
<a href="https://github.com/RedstoneGamez">
<img src="https://cdn.discordapp.com/avatars/282610987801247744/9567e0674a5a6d371bb5d6efb956d57b.png?size=32" alt="RedstoneGamez Profile">
<strong>@RedstoneGamez</strong>
</a>
</p>
# Donators List
# Community
<p align="center">
<a href="https://discord.gg/hmWgxdF">
<img src="https://discordapp.com/api/guilds/516345301985132552/widget.png?style=banner1" alt="Discord Server">
</a>
</p>
-1
View File
@@ -1 +0,0 @@
theme: jekyll-theme-cayman
+20
View File
@@ -0,0 +1,20 @@
// SupportBot 6.0, Created by Emerald Services
// Help Command
const Discord = require("discord.js");
const fs = require("fs");
const yaml = require('js-yaml');
// location for the addons configuration, to keep it simple we generate a settings folder within the addons directory.
const example = yaml.load(fs.readFileSync('./addons/settings/exampleaddon.yml', 'utf8'));
module.exports = {
name: example.ExampleAddonCommand,
description: example.ExampleAddonDesc,
execute(message, args) {
if (supportbot.DeleteMessages == "true") message.delete();
message.channel.send(example.ExampleAddonMessage)
}
};
+9
View File
@@ -0,0 +1,9 @@
#
# SupportBot 6.0
# Example Addon
#
ExampleAddonCommand: "exampleaddon"
ExampleAddonDesc: "This is the default/example addon for SupportBot."
ExampleAddonMessage: "> :white_check_mark: This is the **default** addon for SupportBot. You can download addons from our website, https://emeraldservices.xyz/"
-75
View File
@@ -1,75 +0,0 @@
// SupportBot
// Command: Add User
const Discord = require("discord.js");
const bot = new Discord.Client()
bot.settings = require("../settings.json");
module.exports.run = async (bot, message, args) => {
message.delete()
console.log(`\x1b[36m`, `${message.author} has executed ${bot.settings.prefix}${bot.settings.Add_Command}`)
let staffGroup = message.guild.roles.find(staffRole => staffRole.name === bot.settings.staff)
const rolemissing = new Discord.RichEmbed()
.setDescription(`:x: Looks like this server doesn't have the role **${bot.settings.staff}**`)
.setColor(bot.settings.colour)
if (!staffGroup) return message.reply({embed: rolemissing});
const donothaverole = new Discord.RichEmbed()
.setDescription(`:x: Sorry! You cannot use this command with the role **${bot.settings.staff}**`)
.setColor(bot.settings.colour)
if (!message.member.roles.has(staffGroup.id)) return message.reply({embed: donothaverole});
const outsideticket = new Discord.RichEmbed()
.setDescription(`:x: Cannot use this command becase you are outside a ticket channel.`)
.setColor(bot.settings.colour)
if (!message.channel.name.startsWith(`ticket-`)) return message.channel.send({embed: outsideticket});
let rUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0]));
const cantfinduser = new Discord.RichEmbed()
.setDescription(`:x: Hmm! Does that user exist? I cannot find the user.`)
.setColor(bot.settings.colour)
if(!rUser) return message.channel.send({embed: cantfinduser});
const channel = message.guild.channels.find(channel => channel.name === message.channel.name);
const cantfindchannel = new Discord.RichEmbed()
.setDescription(`:x: Hmm! Does that ticket exist? I cannot find the ticket channel.`)
.setColor(bot.settings.colour)
if(!channel) return message.channel.send({embed: cantfindchannel});
message.delete().catch(O_o=>{});
message.channel.overwritePermissions(rUser, { READ_MESSAGES: true, SEND_MESSAGES: true });
const useradded = new Discord.RichEmbed()
.setColor(bot.settings.colour)
.setDescription(`:white_check_mark: Successfully Added ${rUser} to the ticket.`)
.setTimestamp();
message.channel.send({embed: useradded});
console.log(`\x1b[36m`, `${message.author} has successfully added ${rUser} to ${message.channel}`)
const CMDLog = new Discord.RichEmbed()
.setTitle(bot.settings.Commands_Log_Title)
.addField(`User`, `<@${message.author.id}>`)
.addField(`Command`, bot.settings.Add_Command, true)
.addField(`Channel`, message.channel, true)
.addField(`Executed At`, message.createdAt, true)
.setColor(bot.settings.colour)
.setFooter(bot.settings.footer)
let CommandLog = message.guild.channels.find(LogsChannel => LogsChannel === `${bot.settings.Command_Log_Channel}`);
if(!CommandLog) return message.channel.send(`:x: Error! Could not find the logs channel. **${bot.settings.Command_Log_Channel}**\nThis can be changed via ``settings.json```);
CommandLog.send(CMDLog);
}
exports.help = {
name: bot.settings.Add_Command,
}
+65
View File
@@ -0,0 +1,65 @@
// SupportBot 6.0, Created by Emerald Services
// Add User
const Discord = require("discord.js");
const fs = require("fs");
const yaml = require('js-yaml');
const supportbot = yaml.load(fs.readFileSync('./supportbot-config.yml', 'utf8'));
module.exports = {
name: supportbot.AddUser,
description: supportbot.AddUserDesc,
execute(message, args) {
if (supportbot.DeleteMessages == "true") message.delete();
console.log(`\u001b[32m`, `[${supportbot.Bot_Name}]:`, `\u001b[32m`, `${message.author.tag} has executed ${supportbot.Prefix}${supportbot.AddUser}!`);
let SupportStaff = message.guild.roles.cache.find(SupportTeam => SupportTeam.name === supportbot.Staff)
let Admins = message.guild.roles.cache.find(AdminUser => AdminUser.name === supportbot.Admin)
const NoPerms = new Discord.MessageEmbed()
.setTitle("Invalid Permissions!")
.setDescription(`${supportbot.IncorrectPerms}\n\nRole Required: \`${supportbot.Staff}\` or \`${supportbot.Admin}\``)
.setColor(supportbot.WarningColour)
if (message.member.roles.cache.has(SupportStaff.id) || message.member.roles.cache.has(Admins.id)) {
if (!message.channel.name.startsWith( `${supportbot.TicketChannel}-` )) {
const Exists = new Discord.MessageEmbed()
.setTitle("No Ticket Found!")
.setDescription(`${supportbot.NoValidTicket}`)
.setColor(supportbot.WarningColour);
message.channel.send({ embed: Exists });
return;
}
let rUser = message.guild.member(message.mentions.users.first() || message.guild.members.cache.get(args[0]));
const UserNotExist = new Discord.MessageEmbed()
.setTitle("User Not Found!")
.setDescription(`${supportbot.UserNotFound}\n\nTry Again:\`${supportbot.Prefix}${supportbot.AddUser} <user#0000>\``)
.setColor(supportbot.ErrorColour)
if (!rUser) return message.channel.send({ embed: UserNotExist });
message.channel.updateOverwrite(rUser, {
VIEW_CHANNEL: true,
CREATE_INVITE: false,
SEND_MESSAGES: true,
READ_MESSAGES: true
});
const Complete = new Discord.MessageEmbed()
.setTitle("User Added!")
.setDescription(supportbot.AddedUser.replace(/%user%/g, rUser.id))
.setTimestamp()
.setColor(supportbot.EmbedColour)
message.channel.send({ embed: Complete });
} else {
return message.channel.send({ embed: NoPerms });
}
}
};
+55 -49
View File
@@ -1,64 +1,70 @@
// SupportBot // SupportBot 6.0, Created by Emerald Services
// Command: Say // Links Command
const Discord = require("discord.js"); const Discord = require("discord.js");
const bot = new Discord.Client() const fs = require("fs");
bot.settings = require("../settings.json"); const yaml = require('js-yaml');
const { execute } = require("./help");
const supportbot = yaml.load(fs.readFileSync('./supportbot-config.yml', 'utf8'));
exports.run = async(bot, message, args) => { module.exports = {
message.delete(); name: supportbot.AnnounceCommand,
description: supportbot.AnnounceDesc,
let staffGroup = message.guild.roles.find(staffRole => staffRole.name === `${bot.settings.staff}`) execute(message, args) {
const rolemissing = new Discord.RichEmbed() if (supportbot.DeleteMessages == "true") message.delete();
.setDescription(`:x: Looks like this server doesn't have the role **${bot.settings.staff}**`)
.setColor(bot.settings.colour)
if (!staffGroup) return message.reply(rolemissing).catch(err=>{console.error(err)})
const donothaverole = new Discord.RichEmbed() let locateChannel = message.guild.channels.cache.find(AnnouncementChannel => AnnouncementChannel.name === supportbot.AnnouncementChannel);
.setDescription(`:x: Sorry! You cannot use this command with the role **${bot.settings.staff}**`)
.setColor(bot.settings.colour)
if (!message.member.roles.has(staffGroup.id)) return message.reply(donothaverole)
const embed = new Discord.RichEmbed() const errornochannel = new Discord.MessageEmbed()
.setTitle(`${bot.settings.Announcement_Title}`) .setTitle("Invalid Channel")
.setDescription(args.join(" ")) .setDescription(`${supportbot.InvalidChannel}\n\nChannel Required: \`${supportbot.AnnouncementChannel}`)
.setTimestamp() .setColor(supportbot.ErrorColour);
.setColor(bot.settings.colour)
.setFooter(`${message.author.username}#${message.author.discriminator}`, message.author.displayAvatarURL)
let ac = message.guild.channels.find(AnnounceChannel => AnnounceChannel.name === `${bot.settings.Announcement_Channel}`) if(!locateChannel) return message.channel.send({ embed: errornochannel });
if(!ac) return message.channel.send(`:x: Error! Could not find the logs channel **${bot.settings.Announcement_Channel}**`)
ac.send("@everyone").then((msg) => { let Admins = message.guild.roles.cache.find(adminRole => adminRole.name === supportbot.Admin);
ac.send(embed);
});
const SuggestionSuccessEmbed = new Discord.RichEmbed() const NoPerms = new Discord.MessageEmbed()
.setDescription(`:white_check_mark: You have successfully created an announcement. <#${ac.id}>`) .setTitle("Invalid Permissions!")
.setColor(bot.settings.colour) .setDescription(`${supportbot.IncorrectPerms}\n\nRole Required: \`${Admins.name}\``)
message.channel.send(SuggestionSuccessEmbed); .setColor(supportbot.WarningColour)
console.log(`\x1b[36m`, `${message.author} has executed ${bot.settings.prefix}${bot.settings.Announcement_Command}`) if (!message.member.roles.cache.has(Admins.id))
return message.channel.send({ embed: NoPerms });
const CMDLog = new Discord.RichEmbed()
.setTitle(bot.settings.Commands_Log_Title)
.addField(`User`, `<@${message.author.id}>`)
.addField(`Command`, bot.settings.Announcement_Command, true)
.addField(`Channel`, message.channel, true)
.addField(`Executed At`, message.createdAt, true)
.setColor(bot.settings.colour)
.setFooter(bot.settings.footer)
let CommandLog = message.guild.channels.find(LogsChannel => LogsChannel.name === `${bot.settings.Command_Log_Channel}`);
if(!CommandLog) return message.channel.send(`:x: Error! Could not find the logs channel. **${bot.settings.Command_Log_Channel}**\nThis can be changed via ``settings.json```);
CommandLog.send(CMDLog);
} const embed = new Discord.MessageEmbed()
.setDescription(`> **${supportbot.AnnouncementStarter}**`)
.setColor(supportbot.EmbedColour)
message.channel.send({ embed: embed });
exports.help = { let announcement = []
name: bot.settings.Announcement_Command, message.channel.awaitMessages(response => response.content.length > 2, {
} max: 1,
time: 500000,
errors: ['time'],
}).then((collected) => {
announcement.push(collected.map(r => r.content));
const AnnouncementEmbed = new Discord.MessageEmbed()
.setTitle(supportbot.AnnouncementTitle)
.setThumbnail(supportbot.AnnouncementIcon)
.setDescription(announcement)
.setColor(supportbot.EmbedColour)
.setFooter(supportbot.EmbedFooter, message.author.displayAvatarURL());
locateChannel.send({ embed: AnnouncementEmbed }).then(async function(msg) {
const AnnouncementComplete = new Discord.MessageEmbed()
.setColor(supportbot.SuccessColour)
.setDescription(`:white_check_mark: You have successfully created an announcement. <#${locateChannel.id}>`)
message.channel.send({ embed: AnnouncementComplete })
})
});
}
};
+51
View File
@@ -0,0 +1,51 @@
// SupportBot 6.0, Created by Emerald Services
// Say Command
const Discord = require("discord.js");
const fs = require("fs");
const yaml = require('js-yaml');
const { execute } = require("./help");
const supportbot = yaml.load(fs.readFileSync('./supportbot-config.yml', 'utf8'));
module.exports = {
name: supportbot.BotSay,
description: supportbot.BotSayDesc,
execute(message, args) {
if (supportbot.DeleteMessages == "true") message.delete();
let SupportStaff = message.guild.roles.cache.find(adminRole => adminRole.name === supportbot.Staff);
const NoPerms = new Discord.MessageEmbed()
.setTitle("Invalid Permissions!")
.setDescription(`${supportbot.IncorrectPerms}\n\nRole Required: \`${SupportStaff.name}\``)
.setColor(supportbot.WarningColour)
if (!message.member.roles.cache.has(SupportStaff.id))
return message.channel.send({ embed: NoPerms });
const embed = new Discord.MessageEmbed()
.setDescription(`> **What would you like me to say!**`)
.setColor(supportbot.EmbedColour)
message.channel.send({ embed: embed });
let announcement = []
message.channel.awaitMessages(response => response.content.length > 2, {
max: 1,
time: 500000,
errors: ['time'],
}).then((collected) => {
announcement.push(collected.map(r => r.content));
const AnnouncementEmbed = new Discord.MessageEmbed()
.setDescription(announcement)
.setColor(supportbot.EmbedColour)
message.channel.send({ embed: AnnouncementEmbed })
})
}
};
+135 -44
View File
@@ -1,58 +1,149 @@
// SupportBot // SupportBot 6.0, Created by Emerald Services
// Command: Close Ticket // Links Command
const Discord = require("discord.js"); const Discord = require("discord.js");
const bot = new Discord.Client() const fs = require("fs");
bot.settings = require("../settings.json"); const yaml = require('js-yaml');
const { execute } = require("./help");
const supportbot = yaml.load(fs.readFileSync('./supportbot-config.yml', 'utf8'));
exports.run = (bot, message, args) => { module.exports = {
message.delete(); name: supportbot.CloseTicket,
description: supportbot.CloseTicketDesc,
const outsideticket = new Discord.RichEmbed() execute(message, args) {
.setDescription(`:x: Cannot use this command becase you are outside a ticket channel.`) if (supportbot.DeleteMessages == "true") message.delete();
.setColor(bot.settings.colour)
if (!message.channel.name.startsWith(`ticket-`)) return message.channel.send({embed: outsideticket});
const close1 = new Discord.RichEmbed()
.setDescription(`Looks like you have come to the end of your support ticket\nPlease confirm that you want to close your ticket by saying ||**confirm**||`)
.setFooter("Your request will be avoided in 20 seconds")
.setColor(bot.settings.colour)
message.channel.send({embed: close1}).then(m => {
message.channel.awaitMessages(response => response.content === `confirm`, {
max: 1,
time: 10000,
errors: ['time'],
}).then((collected) => { console.log(`\u001b[32m`, `[${supportbot.Bot_Name}]:`, `\u001b[32m`, `${message.author.tag} has executed ${supportbot.Prefix}${supportbot.CloseTicket}!`);
message.channel.delete();
}).catch(() => { if (!message.channel.name.startsWith( `${supportbot.TicketChannel}-` )) {
m.edit('Close ticket request, timedout').then(m2 => { const Exists = new Discord.MessageEmbed()
m2.delete(); .setTitle("No Ticket Found!")
}, 3000); .setDescription(`${supportbot.NoValidTicket}`)
.setColor(supportbot.WarningColour);
message.channel.send({ embed: Exists });
}); return;
});
console.log(`\x1b[36m`, `${message.author} has executed ${bot.settings.prefix}${bot.settings.Close_Command}`) }
const CMDLog = new Discord.RichEmbed() if (supportbot.CloseConfirmation === "true") {
.setTitle(bot.settings.Commands_Log_Title) const CloseTicketRequest = new Discord.MessageEmbed()
.addField(`User`, `<@${message.author.id}>`) .setTitle(`**${supportbot.ClosingTicket}**`)
.addField(`Command`, bot.settings.Close_Command, true) .setDescription(`Please confirm by repeating the following word.. \`${supportbot.ClosingConfirmation_Word}\` `)
.addField(`Channel`, message.channel, true) .setColor(supportbot.EmbedColour);
.addField(`Executed At`, message.createdAt, true)
.setColor(bot.settings.colour)
.setFooter(bot.settings.footer)
let CommandLog = message.guild.channels.find(LogsChannel => LogsChannel.name === `${bot.settings.Command_Log_Channel}`); message.channel.send(CloseTicketRequest).then(m => {
if(!CommandLog) return message.channel.send(`:x: Error! Could not find the logs channel. **${bot.settings.Command_Log_Channel}**\nThis can be changed via ``settings.json```); message.channel.awaitMessages( response => response.content.toLowerCase() === supportbot.ClosingConfirmation_Word, {
max: 1,
CommandLog.send(CMDLog); time: 20000,
errors: [ 'time' ],
} }).then( collected => {
let logChannel = message.guild.channels.cache.find(channel => channel.name === supportbot.TranscriptLog);
let user = message.author;
let reason = args.join(" ") || "No Reason Provided.";
exports.help = { let name = message.channel.name;
name: bot.settings.Close_Command, let ticketChannel = message.channel;
}
message.channel.send(`**${supportbot.ClosingTicket}**`)
.then(() => {
const logEmbed = new Discord.MessageEmbed()
.setTitle(supportbot.TranscriptTitle)
.setColor(supportbot.EmbedColour)
.setFooter(supportbot.EmbedFooter)
.addField("Closed By", message.author.tag)
.addField("Reason", reason);
message.channel.messages.fetch({ limit: 100 }).then( msgs => {
let txt = '';
msgs = msgs.sort( ( a, b ) => a.createdTimestamp - b.createdTimestamp );
txt += `${message.guild.name}\n`;
txt += `#${ticketChannel.name}\n`;
txt += `${msgs.size} messages\n\n\n`;
msgs.forEach( msg => {
if ( msg.content ) {
txt += `----- ${msg.author.tag} at ${msg.createdAt}\n`;
txt += `${msg.content}\n`;
txt += `-----\n\n`;
}
});
logChannel.send(logEmbed).catch(err => {
message.reply(err)
})
logChannel.send( new Discord.MessageAttachment( Buffer.from( txt ), `${name}.txt` ) );
message.channel.delete();
})
})
})
}).catch( () => {
m.edit('The request to close the ticket has timed out.').then( m2 => m2.delete( 3000 ) );
});
}
if (supportbot.CloseConfirmation === "false") {
let logChannel = message.guild.channels.cache.find(channel => channel.name === supportbot.TranscriptLog);
let user = message.author;
let reason = args.join(" ") || "No Reason Provided.";
let name = message.channel.name;
let ticketChannel = message.channel;
message.channel.send(`**${supportbot.ClosingTicket}**`)
.then(() => {
const logEmbed = new Discord.MessageEmbed()
.setTitle(supportbot.TranscriptTitle)
.setColor(supportbot.EmbedColour)
.setFooter(supportbot.EmbedFooter)
.addField("Closed By", message.author.tag)
.addField("Reason", reason);
message.channel.messages.fetch({ limit: 100 }).then( msgs => {
let txt = '';
msgs = msgs.sort( ( a, b ) => a.createdTimestamp - b.createdTimestamp );
txt += `${message.guild.name}\n`;
txt += `#${ticketChannel.name}\n`;
txt += `${msgs.size} messages\n\n\n`;
msgs.forEach( msg => {
if ( msg.content ) {
txt += `----- ${msg.author.tag} at ${msg.createdAt}\n`;
txt += `${msg.content}\n`;
txt += `-----\n\n`;
}
});
logChannel.send(logEmbed).catch(err => {
message.reply(err)
})
logChannel.send( new Discord.MessageAttachment( Buffer.from( txt ), `${name}.txt` ) );
message.channel.delete();
})
}).catch( () => {
m.edit('The request to close the ticket has timed out.').then( m2 => m2.delete( 3000 ) );
});
}
}
};
-50
View File
@@ -1,50 +0,0 @@
// SupportBot
// Command: Forceclose Ticket
const Discord = require("discord.js");
const bot = new Discord.Client()
bot.settings = require("../settings.json");
exports.run = (bot, message, args) => {
message.delete();
let staffGroup = message.guild.roles.find(staffRole => staffRole.name === `${bot.settings.staff}`)
const rolemissing = new Discord.RichEmbed()
.setDescription(`:x: Looks like this server doesn't have the role **${bot.settings.staff}**`)
.setColor(bot.settings.colour)
if (!staffGroup) return message.reply({embed: rolemissing});
const donothaverole = new Discord.RichEmbed()
.setDescription(`:x: Sorry! You cannot use this command with the role **${bot.settings.staff}**`)
.setColor(bot.settings.colour)
if (!message.member.roles.has(staffGroup.id)) return message.reply({embed: donothaverole});
const outsideticket = new Discord.RichEmbed()
.setDescription(`:x: Cannot use this command becase you are outside a ticket channel.`)
.setColor(bot.settings.colour)
if (!message.channel.name.startsWith(`ticket-`)) return message.channel.send({embed: outsideticket});
message.channel.delete();
console.log(`\x1b[36m`, `${message.author} has executed ${bot.settings.prefix}${bot.settings.Forceclose_Command}`)
const CMDLog = new Discord.RichEmbed()
.setTitle(bot.settings.Commands_Log_Title)
.addField(`User`, `<@${message.author.id}>`)
.addField(`Command`, bot.settings.Forceclose_Command, true)
.addField(`Channel`, message.channel, true)
.addField(`Executed At`, message.createdAt, true)
.setColor(bot.settings.colour)
.setFooter(bot.settings.footer)
let CommandLog = message.guild.channels.find(LogsChannel => LogsChannel.name === `${bot.settings.Command_Log_Channel}`);
if(!CommandLog) return message.channel.send(`:x: Error! Could not find the logs channel. **${bot.settings.Command_Log_Channel}**\nThis can be changed via ``settings.json```);
CommandLog.send(CMDLog);
}
exports.help = {
name: bot.settings.Forceclose_Command,
}
+40 -49
View File
@@ -1,62 +1,53 @@
// SupportBot // SupportBot 6.0, Created by Emerald Services
// Command: Help // Help Command
const Discord = require("discord.js"); const Discord = require("discord.js");
const bot = new Discord.Client() const fs = require("fs");
bot.settings = require("../settings.json"); const yaml = require('js-yaml');
const supportbot = yaml.load(fs.readFileSync('./supportbot-config.yml', 'utf8'));
exports.run = (bot, message, args) => { module.exports = {
message.delete(); name: supportbot.HelpCommand,
description: supportbot.HelpDesc,
let userCommands = ""; execute(message, args) {
userCommands += `**${bot.settings.prefix}${bot.settings.Link_Command}**: Get some important links!\n`; if (supportbot.DeleteMessages == "true") message.delete();
userCommands += `**${bot.settings.prefix}${bot.settings.Ping_Command}**: Check the bots ping. Pong!\n`;
userCommands += `**${bot.settings.prefix}${bot.settings.Ticket_Command} <reason>**: Create a support ticket\n`;
userCommands += `**${bot.settings.prefix}${bot.settings.Close_Command}**: Close your support ticket\n`;
userCommands += `**${bot.settings.prefix}${bot.settings.Suggest_Command} <suggestion>**: Create a server suggestion\n`;
userCommands += `**${bot.settings.prefix}${bot.settings.Report_Command} <user> <reason>**: Create a server suggestion\n`;
let supportCommands = ""; let generalCommands = "";
supportCommands += `**${bot.settings.prefix}${bot.settings.Add_Command} <user>**: Adds a user to a ticket\n`; generalCommands += `**${supportbot.Prefix}${supportbot.HelpCommand}** ${supportbot.HelpDesc}\n`;
supportCommands += `**${bot.settings.prefix}${bot.settings.Remove_Command} <user>**: Removes a user from a ticket\n`; generalCommands += `**${supportbot.Prefix}${supportbot.LinksCommand}** ${supportbot.LinkDesc}\n`;
supportCommands += `**${bot.settings.prefix}${bot.settings.Forceclose_Command}**: Forceclose a support ticket\n`; generalCommands += `**${supportbot.Prefix}${supportbot.SuggestCommand}** ${supportbot.SuggestionDesc}\n`;
supportCommands += `**${bot.settings.prefix}${bot.settings.Rename_Command}**: Rename a support ticket\n`; generalCommands += `**${supportbot.Prefix}${supportbot.PingCommand}** ${supportbot.PingDesc}\n`;
let supportCommands = "";
supportCommands += `**${supportbot.Prefix}${supportbot.NewTicket} [reason]** ${supportbot.NewTicketDesc}\n`
supportCommands += `**${supportbot.Prefix}${supportbot.CloseTicket} [reason]** ${supportbot.CloseTicketDesc}\n`
let staffCommands = ""; let staffCommands = "";
staffCommands += `**${bot.settings.prefix}${bot.settings.Announcement_Command} <message>**: Create a bot announcement\n`; staffCommands += `**${supportbot.Prefix}${supportbot.AddUser} <user#0000>** ${supportbot.AddUserDesc}\n`
staffCommands += `**${bot.settings.prefix}${bot.settings.Say_Command} <message>**: Send a message as the bot\n`; staffCommands += `**${supportbot.Prefix}${supportbot.RemoveUser} <user#0000>** ${supportbot.RemoveUserDesc}\n`
staffCommands += `**${bot.settings.prefix}${bot.settings.Lockchat_Command}**: Lock the chat channel\n`; staffCommands += `**${supportbot.Prefix}${supportbot.BotSay}** ${supportbot.BotSayDesc}\n`
staffCommands += `**${bot.settings.prefix}${bot.settings.UnLockchat_Command}**: UnLock the chat channel\n`; staffCommands += `**${supportbot.Prefix}${supportbot.AnnounceCommand}** ${supportbot.AnnounceDesc}\n`
const embed = new Discord.RichEmbed() const HelpCommandEmbed = new Discord.MessageEmbed()
.setTitle(bot.settings.botname) .setTitle(supportbot.Bot_Name)
.addField(":ticket: Support Commands", userCommands) .setThumbnail(message.author.displayAvatarURL())
.addField(":pushpin: Support Commands", supportCommands, true)
.addField(":pushpin: Staff Commands", staffCommands, true)
.setColor(bot.settings.colour)
.setFooter(bot.settings.footer, message.author.displayAvatarURL);
message.channel.send(embed) .addFields(
{ name: '🖥️ General Commands', value: `${generalCommands}\n`, inline: false },
{ name: '🎫 Support Commands', value: `${supportCommands}\n`, inline: false },
)
console.log(`\x1b[36m`, `${message.author} has executed ${bot.settings.prefix}${bot.settings.Help_Command}`) .setColor(supportbot.EmbedColour)
.setFooter(supportbot.EmbedFooter, message.author.displayAvatarURL());
const CMDLog = new Discord.RichEmbed() if (message.member.roles.cache.some(role => role.name === supportbot.Staff || supportbot.Admin)) {
.setTitle(bot.settings.Commands_Log_Title) HelpCommandEmbed.addFields(
.addField(`User`, `<@${message.author.id}>`) { name: '🔑 Staff Commands', value: `${staffCommands}\n`, inline: false },
.addField(`Command`, bot.settings.Help_Command, true) )
.addField(`Channel`, message.channel, true) }
.addField(`Executed At`, message.createdAt, true)
.setColor(bot.settings.colour)
.setFooter(bot.settings.footer)
let CommandLog = message.guild.channels.find(LogsChannel => LogsChannel.name === `${bot.settings.Command_Log_Channel}`); message.channel.send({ embed: HelpCommandEmbed });
if(!CommandLog) return message.channel.send(`:x: Error! Could not find the logs channel. **${bot.settings.Command_Log_Channel}**\nThis can be changed via settings.json`); }
};
CommandLog.send(CMDLog);
}
exports.help = {
name: bot.settings.Help_Command,
}
+27 -41
View File
@@ -1,48 +1,34 @@
// SupportBot // SupportBot 6.0, Created by Emerald Services
// Command: Help // Links Command
const Discord = require( "discord.js" ); const Discord = require("discord.js");
const bot = new Discord.Client() const fs = require("fs");
bot.settings = require( "../settings.json" ); const yaml = require('js-yaml');
const { execute } = require("./help");
const supportbot = yaml.load(fs.readFileSync('./supportbot-config.yml', 'utf8'));
exports.run = ( bot, message, args ) => { module.exports = {
message.delete(); name: supportbot.LinksCommand,
description: supportbot.LinksDesc,
let botLinks = bot.settings.LINKS; execute(message, args) {
if (supportbot.DeleteMessages == "true") message.delete();
let links = ''; const LinksEmbed = new Discord.MessageEmbed()
.setColor(supportbot.EmbedColour)
let botLinks = supportbot.LINKS;
let links = '';
for ( let name in botLinks ) {
links += `[${name}](${botLinks[ name ]})\n`;
};
LinksEmbed.addField(supportbot.LinksTitle, links)
message.channel.send({ embed: LinksEmbed });
for ( let name in botLinks ) {
links += `[${name}](${botLinks[ name ]})\n`;
} }
};
let embed = new Discord.RichEmbed()
.setTitle( bot.settings.LINKS_TITLE )
.setDescription( links )
.setColor( bot.settings.colour )
.setFooter( bot.settings.footer )
message.channel.send( embed );
console.log( `\x1b[36m`, `${message.author} has executed ${bot.settings.prefix}${bot.settings.Link_Command}` )
const CMDLog = new Discord.RichEmbed()
.setTitle(bot.settings.Commands_Log_Title)
.addField(`User`, `<@${message.author.id}>`)
.addField(`Command`, bot.settings.Link_Command, true)
.addField(`Channel`, message.channel, true)
.addField(`Executed At`, message.createdAt, true)
.setColor(bot.settings.colour)
.setFooter(bot.settings.footer)
let CommandLog = message.guild.channels.find(LogsChannel => LogsChannel.name === `${bot.settings.Command_Log_Channel}`);
if(!CommandLog) return message.channel.send(`:x: Error! Could not find the logs channel. **${bot.settings.Command_Log_Channel}**\nThis can be changed via ``settings.json```);
CommandLog.send(CMDLog);
}
exports.help = {
name: bot.settings.Link_Command,
}
-53
View File
@@ -1,53 +0,0 @@
// SupportBot
// Command: Lockchat
const Discord = require("discord.js");
const bot = new Discord.Client()
bot.settings = require("../settings.json");
exports.run = async(bot, message, args) => {
message.delete();
let staffGroup = message.guild.roles.find(staffRole => staffRole.name === `${bot.settings.staff}`)
let lockedRole = message.guild.roles.find(lc => lc.name === `${bot.settings.locked_role}`)
const rolemissing = new Discord.RichEmbed()
.setDescription(`:x: Looks like this server doesn't have the role **${bot.settings.staff}**`)
.setColor(bot.settings.colour)
if (!staffGroup) return message.reply(rolemissing).catch(err=>{console.error(err)})
const donothaverole = new Discord.RichEmbed()
.setDescription(`:x: Sorry! You cannot use this command with the role **${bot.settings.staff}**`)
.setColor(bot.settings.colour)
if (!message.member.roles.has(staffGroup.id)) return message.reply(donothaverole)
message.channel.overwritePermissions(lockedRole, { READ_MESSAGES: false, SEND_MESSAGES: false });
message.channel.overwritePermissions(staffGroup, { READ_MESSAGES: true, SEND_MESSAGES: true });
const lockmsg = new Discord.RichEmbed()
.setDescription(":white_check_mark: **Chat Locked**")
.setColor(bot.settings.colour)
message.channel.send(lockmsg)
console.log(`\x1b[36m`, `${message.author} has executed ${bot.settings.prefix}${bot.settings.Lockchat_Command}`)
const CMDLog = new Discord.RichEmbed()
.setTitle(bot.settings.Commands_Log_Title)
.addField(`User`, `<@${message.author.id}>`)
.addField(`Command`, bot.settings.Lockchat_Command, true)
.addField(`Channel`, message.channel, true)
.addField(`Executed At`, message.createdAt, true)
.setColor(bot.settings.colour)
.setFooter(bot.settings.footer)
let CommandLog = message.guild.channels.find(LogsChannel => LogsChannel.name === `${bot.settings.Command_Log_Channel}`);
if(!CommandLog) return message.channel.send(`:x: Error! Could not find the logs channel. **${bot.settings.Command_Log_Channel}**\nThis can be changed via ``settings.json```);
CommandLog.send(CMDLog);
}
exports.help = {
name: bot.settings.Lockchat_Command,
}
+239
View File
@@ -0,0 +1,239 @@
const Discord = require("discord.js");
const bot = new Discord.Client()
const fs = require("fs")
const yaml = require('js-yaml');
const supportbot = yaml.load(fs.readFileSync('./supportbot-config.yml', 'utf8'));
const TicketNumberID = require('../utils/TicketNumber.js');
const reacted = [];
module.exports = {
name: supportbot.NewTicket,
description: supportbot.NewTicketDesc,
execute(message, args) {
if (supportbot.DeleteMessages == "true") message.delete();
console.log(`\u001b[32m`, `[${supportbot.Bot_Name}]:`, `\u001b[32m`, `${message.author.tag} has executed ${supportbot.Prefix}${supportbot.NewTicket}!`);
// Ticket ID
let ticketNumberID = TicketNumberID.pad(message.guild.id);
// Ticket Subject
const TicketSubject = args.join(" ") || supportbot.NoTicketSubject;
// Ticket Exists
const TicketExists = new Discord.MessageEmbed()
.setTitle("Ticket Exists!")
.setDescription(`${supportbot.TicketExists}`)
.setColor(supportbot.WarningColour)
if (message.guild.channels.cache.find(SupportTicket => SupportTicket.name === `${supportbot.TicketChannel}-${ticketNumberID}`))
return message.channel.send({ embed: TicketExists });
message.guild.channels.create(`${supportbot.TicketChannel}-${ticketNumberID}`, {
type: "text",
}).then(SupportTicket => {
let AllUsers = message.guild.roles.cache.find(everyone => everyone.name === '@everyone')
let SupportStaff = message.guild.roles.cache.find(SupportTeam => SupportTeam.name === supportbot.Staff)
let Admins = message.guild.roles.cache.find(AdminUser => AdminUser.name === supportbot.Admin)
let DeptRole1 = message.guild.roles.cache.find(DepartmentRole => DepartmentRole.name === `${supportbot.DepartmentRole_1}`)
let DeptRole2 = message.guild.roles.cache.find(DepartmentRole => DepartmentRole.name === `${supportbot.DepartmentRole_2}`)
let DeptRole3 = message.guild.roles.cache.find(DepartmentRole => DepartmentRole.name === `${supportbot.DepartmentRole_3}`)
SupportTicket.updateOverwrite(AllUsers, {
VIEW_CHANNEL: false,
READ_MESSAGES: false,
SEND_MESSAGES: false,
})
SupportTicket.updateOverwrite(message.author, {
VIEW_CHANNEL: true,
READ_MESSAGES: true,
SEND_MESSAGES: true,
})
SupportTicket.updateOverwrite(SupportStaff, {
VIEW_CHANNEL: true,
READ_MESSAGES: true,
SEND_MESSAGES: true,
})
SupportTicket.updateOverwrite(Admins, {
VIEW_CHANNEL: true,
READ_MESSAGES: true,
SEND_MESSAGES: true,
})
// Ticket Category
let TicketCategory = message.guild.channels.cache.find(category => category.name === supportbot.TicketCategory)
if (TicketCategory) {
SupportTicket.setParent(TicketCategory.id)
} else {
if (message.guild.channels.cache.get(supportbot.TicketCategory)) {
SupportTicket.setParent(message.guild.channels.cache.get(supportbot.TicketCategory).id);
}
}
// Ticket Created, Message Sent
const TicketMessage = new Discord.MessageEmbed()
.setTitle(supportbot.Ticket_Title.replace(/%ticketauthor%/g, message.author.id).replace(/%ticketid%/g, SupportTicket.id).replace(/%ticketusername%/g, message.member.user.username))
.setDescription(supportbot.TicketMessage.replace(/%ticketauthor%/g, message.author.id).replace(/%ticketid%/g, SupportTicket.id).replace(/%ticketusername%/g, message.member.user.username))
.setColor(supportbot.EmbedColour)
if (supportbot.TicketSubject === "embed") {
if (TicketSubject != 'No Reason Provided.') {
TicketMessage.addFields({ name: 'Reason', value: TicketSubject })
}
}
if (supportbot.TicketSubject === "description") {
if (TicketSubject != 'No Reason Provided.') {
SupportTicket.setTopic(`Reason: ${TicketSubject} - User ID: ${message.author.id} - Ticket: ${SupportTicket.name}`)
}
}
if (supportbot.TicketDepartments === "true") {
TicketMessage.addFields({ name: 'Departments', value: `${supportbot.DepartmentEmoji_1} **${supportbot.DepartmentTitle_1}**\n${supportbot.DepartmentEmoji_2} **${supportbot.DepartmentTitle_2}**\n${supportbot.DepartmentEmoji_3} **${supportbot.DepartmentTitle_3}**` })
}
SupportTicket.send({ embed: TicketMessage }).then( async function(msg) {
const Emoji_1 = supportbot.DepartmentEmoji_1;
const Emoji_2 = supportbot.DepartmentEmoji_2;
const Emoji_3 = supportbot.DepartmentEmoji_3;
reacted[ticketNumberID] = false;
if (supportbot.TicketDepartments === "true") {
await msg.react(Emoji_1);
await msg.react(Emoji_2);
await msg.react(Emoji_3);
let filter = (reaction, user) => {
if (user.id !== message.author.id) return;
if (typeof reacted[ticketNumberID] !== "boolean") return;
delete reacted[ticketNumberID];
if (reaction.emoji.name === Emoji_1) {
SupportTicket.updateOverwrite(message.author.id, { VIEW_CHANNEL: true, READ_MESSAGES: true, SEND_MESSAGES: true, })
SupportTicket.updateOverwrite(Admins, { VIEW_CHANNEL: true, READ_MESSAGES: true, SEND_MESSAGES: true, })
SupportTicket.updateOverwrite(DeptRole1, { VIEW_CHANNEL: true, READ_MESSAGES: true, SEND_MESSAGES: true, })
if (supportbot.AllowStaff === "true") {
SupportTicket.updateOverwrite(SupportStaff, { VIEW_CHANNEL: true, READ_MESSAGES: true, SEND_MESSAGES: true, })
}
if (supportbot.AllowStaff === "false") {
SupportTicket.updateOverwrite(SupportStaff, { VIEW_CHANNEL: false, READ_MESSAGES: true, SEND_MESSAGES: true, })
}
const Department1 = new Discord.MessageEmbed()
.setTitle(`> Thank for reaching out to the **${supportbot.DepartmentTitle_1} Department**. Please provide us information regarding your query.`)
.setColor(supportbot.EmbedColour)
SupportTicket.send({ embed: Department1 });
}
if (reaction.emoji.name === Emoji_2) {
SupportTicket.updateOverwrite(message.author.id, { VIEW_CHANNEL: true, READ_MESSAGES: true, SEND_MESSAGES: true, })
SupportTicket.updateOverwrite(Admins, { VIEW_CHANNEL: true, READ_MESSAGES: true, SEND_MESSAGES: true, })
SupportTicket.updateOverwrite(DeptRole2, { VIEW_CHANNEL: true, READ_MESSAGES: true, SEND_MESSAGES: true, })
if (supportbot.AllowStaff === "true") {
SupportTicket.updateOverwrite(SupportStaff, { VIEW_CHANNEL: true, READ_MESSAGES: true, SEND_MESSAGES: true, })
}
if (supportbot.AllowStaff === "false") {
SupportTicket.updateOverwrite(SupportStaff, { VIEW_CHANNEL: false, READ_MESSAGES: true, SEND_MESSAGES: true, })
}
const Department2 = new Discord.MessageEmbed()
.setTitle(`> Thank for reaching out to the **${supportbot.DepartmentTitle_2} Department**. Please provide us information regarding your query.`)
.setColor(supportbot.EmbedColour)
SupportTicket.send({ embed: Department2 });
}
if (reaction.emoji.name === `${Emoji_3}`) {
SupportTicket.updateOverwrite(message.author.id, { VIEW_CHANNEL: true, READ_MESSAGES: true, SEND_MESSAGES: true, })
SupportTicket.updateOverwrite(Admins, { VIEW_CHANNEL: true, READ_MESSAGES: true, SEND_MESSAGES: true, })
SupportTicket.updateOverwrite(DeptRole3, { VIEW_CHANNEL: true, READ_MESSAGES: true, SEND_MESSAGES: true, })
SupportTicket.updateOverwrite(SupportStaff, { VIEW_CHANNEL: false, READ_MESSAGES: true, SEND_MESSAGES: true, })
if (supportbot.AllowStaff === "true") {
SupportTicket.updateOverwrite(SupportStaff, { VIEW_CHANNEL: true, READ_MESSAGES: true, SEND_MESSAGES: true, })
}
if (supportbot.AllowStaff === "false") {
SupportTicket.updateOverwrite(SupportStaff, { VIEW_CHANNEL: false, READ_MESSAGES: true, SEND_MESSAGES: true, })
}
const Department3 = new Discord.MessageEmbed()
.setTitle(`> Thank for reaching out to the **${supportbot.DepartmentTitle_3} Department**. Please provide us information regarding your query.`)
.setColor(supportbot.EmbedColour)
SupportTicket.send({ embed: Department3 });
}
return [Emoji_1, Emoji_2, Emoji_3].includes(reaction.emoji.name) && user.id !== message.author.id;
}
msg.awaitReactions(filter, {
max: 4,
time: 60000,
errors: ['time']
}).then(async collected => {
});
setTimeout(async function() {
if (typeof reacted[ticketNumberID] == "boolean") {
delete reacted[ticketNumberID];
//delete channel because didn't react in a minute
}
}, 60000);
}
});
const CreatedTicket = new Discord.MessageEmbed()
.setDescription(supportbot.TicketCreatedAlert.replace(/%ticketauthor%/g, message.author.id).replace(/%ticketid%/g, SupportTicket.id).replace(/%ticketusername%/g, message.member.user.username))
.setColor(supportbot.EmbedColour)
message.channel.send({ embed: CreatedTicket });
fs.writeFileSync("./storage/SupportTickets.json", '{\n "ticket": "' + SupportTicket.name + '", \n "id":' + message.author.id + "\n}", (err) => {
if (!err) return;
console.error(err)
})
// Ticket Logs
const errornochannel = new Discord.MessageEmbed()
.setTitle("SupportBot Error!")
.setDescription(`:x: **Error!** Channel not Found, This command cannot be executed proberbly as their is no channel within this server.\nThis is configurable via **supportbot-config.yml**\n\nChannel Required: \`${supportbot.TicketLog}\`\n\nError Code: \`SB-03\``)
.setColor(supportbot.ErrorColour);
const TicketLogs = new Discord.MessageEmbed()
.setTitle("Ticket Log")
.setThumbnail(supportbot.Ticket_Thumbnail)
.addFields(
{ name: 'Ticket', value: `<#${SupportTicket.id}>` },
{ name: 'User', value: `<@${message.author.id}>` },
)
.setColor(supportbot.EmbedColour)
.setFooter(supportbot.EmbedFooter)
let locateChannel = message.guild.channels.cache.find(LocateChannel => LocateChannel.name === supportbot.TicketLog)
if(!locateChannel) return message.channel.send({ embed: errornochannel });
locateChannel.send({ embed: TicketLogs });
})
}
};
+17 -29
View File
@@ -1,37 +1,25 @@
// SupportBot // SupportBot 6.0, Created by Emerald Services
// Command: Ping // Help Command
const Discord = require("discord.js"); const Discord = require("discord.js");
const bot = new Discord.Client() const fs = require("fs");
bot.settings = require("../settings.json"); const yaml = require('js-yaml');
const supportbot = yaml.load(fs.readFileSync('./supportbot-config.yml', 'utf8'));
exports.run = (bot, message, args) => { module.exports = {
message.delete(); name: supportbot.PingCommand,
description: supportbot.PingDesc,
const embed = new Discord.RichEmbed() execute(message, args) {
.setDescription(`:ping_pong: **Pong!** \`${bot.ping}ms\` `) if (supportbot.DeleteMessages == "true") message.delete();
.setColor(bot.settings.colour)
message.channel.send(embed).catch(console.error);
console.log(`\x1b[36m`, `${message.author} has executed ${bot.settings.prefix}${bot.settings.Ping_Command}`) let ping = Date.now() - message.createdTimestamp + " ms";
const CMDLog = new Discord.RichEmbed() const PingCommandEmbed = new Discord.MessageEmbed()
.setTitle(bot.settings.Commands_Log_Title) .setDescription(`🏓 **Pong!** \`${Date.now() - message.createdTimestamp}ms\``)
.addField(`User`, `<@${message.author.id}>`) .setColor(supportbot.EmbedColour)
.addField(`Command`, bot.settings.Ping_Command, true)
.addField(`Channel`, message.channel, true)
.addField(`Executed At`, message.createdAt, true)
.setColor(bot.settings.colour)
.setFooter(bot.settings.footer)
let CommandLog = message.guild.channels.find(LogsChannel => LogsChannel.name === `${bot.settings.Command_Log_Channel}`); message.channel.send({ embed: PingCommandEmbed });
if(!CommandLog) return message.channel.send(`:x: Error! Could not find the logs channel. **${bot.settings.Command_Log_Channel}**\nThis can be changed via ``settings.json```); }
};
CommandLog.send(CMDLog);
}
exports.help = {
name: bot.settings.Ping_Command,
}
-60
View File
@@ -1,60 +0,0 @@
// SupportBot
// Command: Poll
const Discord = require("discord.js");
const bot = new Discord.Client()
bot.settings = require("../settings.json");
exports.run = (bot, message, args) => {
message.delete();
let staffGroup = message.guild.roles.find(staffRole => staffRole.name === `${bot.settings.staff}`)
const rolemissing = new Discord.RichEmbed()
.setDescription(`:x: Looks like this server doesn't have the role **${bot.settings.staff}**`)
.setColor(bot.settings.colour)
if (!staffGroup) return message.reply(rolemissing).catch(err=>{console.error(err)})
const donothaverole = new Discord.RichEmbed()
.setDescription(`:x: Sorry! You cannot use this command with the role **${bot.settings.staff}**`)
.setColor(bot.settings.colour)
if (!message.member.roles.has(staffGroup.id)) return message.reply(donothaverole)
const embed = new Discord.RichEmbed()
.setTitle(`${bot.settings.Poll_Title}`)
.setDescription(args.join(" "))
.setTimestamp()
.setColor(bot.settings.colour)
.setFooter(bot.settings.footer, message.author.displayAvatarURL)
let ac = message.guild.channels.find(AnnounceChannel => AnnounceChannel.name === `${bot.settings.Poll_Channel}`)
if(!ac) return message.channel.send(`:x: Error! Could not find the logs channel **${bot.settings.Poll_Channel}**`)
ac.send(embed)
.then(async function(msg) {
msg.react(bot.settings.Reaction_Poll_1).then(() => msg.react(bot.settings.Reaction_Poll_2));
});
console.log(`\x1b[36m`, `${message.author} has executed ${bot.settings.prefix}${bot.settings.Poll_Command}`)
const CMDLog = new Discord.RichEmbed()
.setTitle(bot.settings.Commands_Log_Title)
.addField(`User`, `<@${message.author.id}>`)
.addField(`Command`, bot.settings.Close_Command, true)
.addField(`Channel`, message.channel, true)
.addField(`Executed At`, message.createdAt, true)
.setColor(bot.settings.colour)
.setFooter(bot.settings.footer)
let CommandLog = message.guild.channels.find(LogsChannel => LogsChannel.name === `${bot.settings.Command_Log_Channel}`);
if(!CommandLog) return message.channel.send(`:x: Error! Could not find the logs channel. **${bot.settings.Command_Log_Channel}**\nThis can be changed via ``settings.json```);
CommandLog.send(CMDLog);
}
exports.help = {
name: bot.settings.Poll_Command,
}
-74
View File
@@ -1,74 +0,0 @@
// SupportBot
// Command: Remove User
const Discord = require("discord.js");
const bot = new Discord.Client()
bot.settings = require("../settings.json");
module.exports.run = async (bot, message, args) => {
message.delete()
console.log(`\x1b[36m`, `${message.author} has executed ${bot.settings.prefix}${bot.settings.Add_Command}`)
let staffGroup = message.guild.roles.find(staffRole => staffRole.name === bot.settings.staff)
const rolemissing = new Discord.RichEmbed()
.setDescription(`:x: Looks like this server doesn't have the role **${bot.settings.staff}**`)
.setColor(bot.settings.colour)
if (!staffGroup) return message.reply({embed: rolemissing});
const donothaverole = new Discord.RichEmbed()
.setDescription(`:x: Sorry! You cannot use this command with the role **${bot.settings.staff}**`)
.setColor(bot.settings.colour)
if (!message.member.roles.has(staffGroup.id)) return message.reply({embed: donothaverole});
const outsideticket = new Discord.RichEmbed()
.setDescription(`:x: Cannot use this command becase you are outside a ticket channel.`)
.setColor(bot.settings.colour)
if (!message.channel.name.startsWith(`ticket-`)) return message.channel.send({embed: outsideticket});
let rUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0]));
const cantfinduser = new Discord.RichEmbed()
.setDescription(`:x: Hmm! Does that user exist? I cannot find the user.`)
.setColor(bot.settings.colour)
if(!rUser) return message.channel.send({embed: cantfinduser});
const channel = message.guild.channels.find(channel => channel.name === message.channel.name);
const cantfindchannel = new Discord.RichEmbed()
.setDescription(`:x: Hmm! Does that ticket exist? I cannot find the ticket channel.`)
.setColor(bot.settings.colour)
if(!channel) return message.channel.send({embed: cantfindchannel});
message.delete().catch(O_o=>{});
message.channel.overwritePermissions(rUser, { READ_MESSAGES: false, SEND_MESSAGES: false });
const useradded = new Discord.RichEmbed()
.setColor(bot.settings.colour)
.setDescription(`:white_check_mark: Successfully remove ${rUser} from the ticket.`)
.setTimestamp();
message.channel.send({embed: useradded});
console.log(`\x1b[36m`, `${message.author} has successfully removed ${rUser} from ${message.channel}`)
const CMDLog = new Discord.RichEmbed()
.setTitle(bot.settings.Commands_Log_Title)
.addField(`User`, `<@${message.author.id}>`)
.addField(`Command`, bot.settings.Remove_Command, true)
.addField(`Channel`, message.channel, true)
.addField(`Executed At`, message.createdAt, true)
.setColor(bot.settings.colour)
.setFooter(bot.settings.footer)
let CommandLog = message.guild.channels.find(LogsChannel => LogsChannel.name === `${bot.settings.Command_Log_Channel}`);
if(!CommandLog) return message.channel.send(`:x: Error! Could not find the logs channel. **${bot.settings.Command_Log_Channel}**\nThis can be changed via ``settings.json```);
CommandLog.send(CMDLog);
}
exports.help = {
name: bot.settings.Remove_Command,
}
+64
View File
@@ -0,0 +1,64 @@
// SupportBot 6.0, Created by Emerald Services
// Add User
const Discord = require("discord.js");
const fs = require("fs");
const yaml = require('js-yaml');
const supportbot = yaml.load(fs.readFileSync('./supportbot-config.yml', 'utf8'));
module.exports = {
name: supportbot.RemoveUser,
description: supportbot.RemoveUserDesc,
execute(message, args) {
if (supportbot.DeleteMessages == "true") message.delete();
console.log(`\u001b[32m`, `[${supportbot.Bot_Name}]:`, `\u001b[32m`, `${message.author.tag} has executed ${supportbot.Prefix}${supportbot.RemoveUser}!`);
let SupportStaff = message.guild.roles.cache.find(SupportTeam => SupportTeam.name === supportbot.Staff)
let Admins = message.guild.roles.cache.find(AdminUser => AdminUser.name === supportbot.Admin)
const NoPerms = new Discord.MessageEmbed()
.setTitle("Invalid Permissions!")
.setDescription(`${supportbot.IncorrectPerms}\n\nRole Required: \`${supportbot.Staff}\` or \`${supportbot.Admin}\``)
.setColor(supportbot.WarningColour)
if (message.member.roles.cache.has(SupportStaff.id) || message.member.roles.cache.has(Admins.id)) {
if (!message.channel.name.startsWith( `${supportbot.TicketChannel}-` )) {
const Exists = new Discord.MessageEmbed()
.setTitle("No Ticket Found!")
.setDescription(`${supportbot.NoValidTicket}`)
.setColor(supportbot.WarningColour);
message.channel.send({ embed: Exists });
return;
}
let rUser = message.guild.member(message.mentions.users.first() || message.guild.members.cache.get(args[0]));
const UserNotExist = new Discord.MessageEmbed()
.setTitle("User Not Found!")
.setDescription(`${supportbot.UserNotFound}\n\nTry Again:\`${supportbot.Prefix}${supportbot.RemoveUser} <user#0000>\``)
.setColor(supportbot.ErrorColour)
if (!rUser) return message.channel.send({ embed: UserNotExist });
message.channel.updateOverwrite(rUser, {
VIEW_CHANNEL: false,
CREATE_INVITE: false,
SEND_MESSAGES: false,
READ_MESSAGES: false
});
const Complete = new Discord.MessageEmbed()
.setTitle("User Removed!")
.setDescription(supportbot.RemovedUser.replace(/%user%/g, rUser.id))
.setTimestamp()
.setColor(supportbot.EmbedColour)
message.channel.send({ embed: Complete });
} else {
return message.channel.send({ embed: NoPerms });
}
}
};
-63
View File
@@ -1,63 +0,0 @@
// SupportBot
// Command: Close Ticket
const Discord = require("discord.js");
const bot = new Discord.Client()
bot.settings = require("../settings.json");
exports.run = (bot, message, args) => {
message.delete();
let staffGroup = message.guild.roles.find(staffRole => staffRole.name === bot.settings.staff)
const rolemissing = new Discord.RichEmbed()
.setDescription(`:x: Looks like this server doesn't have the role **${bot.settings.staff}**`)
.setColor(bot.settings.colour)
if (!staffGroup) return message.reply({embed: rolemissing});
const donothaverole = new Discord.RichEmbed()
.setDescription(`:x: Sorry! You cannot use this command with the role **${bot.settings.staff}**`)
.setColor(bot.settings.colour)
if (!message.member.roles.has(staffGroup.id)) return message.reply({embed: donothaverole});
const outsideticket = new Discord.RichEmbed()
.setDescription(`:x: Cannot use this command becase you are outside a ticket channel.`)
.setColor(bot.settings.colour)
if (!message.channel.name.startsWith(`ticket-`)) return message.channel.send({embed: outsideticket});
const renameto = args.join(" ")
message.channel.setName(`ticket-${renameto}-${message.author.username}`)
// Renamed Ticket Logistic
const logEmbed = new Discord.RichEmbed()
.setTitle(":ticket: Ticket Renamed")
.setDescription(`<@${message.author.id}> has renamed a ticket to ${renameto}`)
.setColor(bot.settings.colour)
.setFooter(bot.settings.footer)
let logChannel = message.guild.channels.find(TicketChannel => TicketChannel.name === `${bot.settings.Ticket_Logs}`);
if(!logChannel) return message.channel.send(`:x: Error! Could not find the logs channel **${bot.settings.Ticket_Logs}**`);
logChannel.send({embed: logEmbed})
console.log(`\x1b[36m`, `${message.author} has executed ${bot.settings.prefix}${bot.settings.Rename_Command}`)
const CMDLog = new Discord.RichEmbed()
.setTitle(bot.settings.Commands_Log_Title)
.addField(`User`, `<@${message.author.id}>`)
.addField(`Command`, bot.settings.Rename_Command, true)
.addField(`Channel`, message.channel, true)
.addField(`Executed At`, message.createdAt, true)
.setColor(bot.settings.colour)
.setFooter(bot.settings.footer)
let CommandLog = message.guild.channels.find(LogsChannel => LogsChannel.name === `${bot.settings.Command_Log_Channel}`);
if(!CommandLog) return message.channel.send(`:x: Error! Could not find the logs channel. **${bot.settings.Command_Log_Channel}**\nThis can be changed via ``settings.json```);
CommandLog.send(CMDLog);
}
exports.help = {
name: bot.settings.Rename_Command,
}
-75
View File
@@ -1,75 +0,0 @@
// SupportBot
// Command: Report
const Discord = require("discord.js");
const bot = new Discord.Client()
bot.settings = require("../settings.json");
exports.run = (bot, message, args) => {
message.delete();
let staffGroup = message.guild.roles.find(staffRole => staffRole.name === `${bot.settings.staff}`);
const rolemissing = new Discord.RichEmbed()
.setDescription(`:x: Looks like this server doesn't have the role **${bot.settings.staff}**`)
.setColor(bot.settings.colour);
if(!staffGroup) {
message.reply(rolemissing).catch(err => {
console.error(err);
});
} else {
const donothaverole = new Discord.RichEmbed()
.setDescription(`:x: Sorry! You cannot use this command with the role **${bot.settings.staff}**`)
.setColor(bot.settings.colour)
if(!message.member.roles.has(staffGroup.id)) {
message.reply(donothaverole);
} else {
if(!args[0]) {
message.reply(":x: Sorry! Please specify the user to report.");
} else {
if(!args[1]) {
message.reply(":x: Sorry! Specify the reason of your report.");
} else {
let reportDesc = args.slice(1).join(" ");
const embed = new Discord.RichEmbed()
.setTitle(`${bot.settings.Report_Title}`)
.setThumbnail(message.author.avatarURL)
.addField("Report by:", `<@${message.author.id}>`, false)
.addField("Description:", `${reportDesc}`, false)
.addField("Reported User:", `${args[0]}`, false)
.setTimestamp(new Date())
.setColor(bot.settings.colour)
.setFooter(`${message.author.username}#${message.author.discriminator}`, message.author.displayAvatarURL);
let rc = message.guild.channels.find(ReportChannel => ReportChannel.name === `${bot.settings.Report_Channel}`)
if(!rc) {
message.channel.send(`:x: Error! Could not find the logs channel **${bot.settings.Report_Channel}**`);
} else {
rc.send(embed);
console.log(`\x1b[36m`, `${message.author} has executed ${bot.settings.prefix}${bot.settings.Report_Command}`);
const CMDLog = new Discord.RichEmbed()
.setTitle(bot.settings.Commands_Log_Title)
.addField(`User`, `<@${message.author.id}>`)
.addField(`Command`, bot.settings.Report_Command, true)
.addField(`Channel`, message.channel, true)
.addField(`Executed At`, message.createdAt, true)
.setColor(bot.settings.colour)
.setFooter(bot.settings.footer)
let CommandLog = message.guild.channels.find(LogsChannel => LogsChannel.name === `${bot.settings.Command_Log_Channel}`);
if(!CommandLog) return message.channel.send(`:x: Error! Could not find the logs channel. **${bot.settings.Command_Log_Channel}**\nThis can be changed via ``settings.json```);
CommandLog.send(CMDLog);
}
}
}
}
}
}
exports.help = {
name: bot.settings.Report_Command
}
-52
View File
@@ -1,52 +0,0 @@
// SupportBot
// Command: Say
const Discord = require("discord.js");
const bot = new Discord.Client()
bot.settings = require("../settings.json");
exports.run = (bot, message, args) => {
message.delete();
let staffGroup = message.guild.roles.find(staffRole => staffRole.name === `${bot.settings.staff}`)
const rolemissing = new Discord.RichEmbed()
.setDescription(`:x: Looks like this server doesn't have the role **${bot.settings.staff}**`)
.setColor(bot.settings.colour)
if (!staffGroup) return message.reply(rolemissing).catch(err=>{console.error(err)})
const donothaverole = new Discord.RichEmbed()
.setDescription(`:x: Sorry! You cannot use this command with the role **${bot.settings.staff}**`)
.setColor(bot.settings.colour)
if (!message.member.roles.has(staffGroup.id)) return message.reply(donothaverole)
const embed = new Discord.RichEmbed()
.setTitle(`${bot.settings.Announcement_Title}`)
.setDescription(args.join(" "))
.setTimestamp()
.setColor(bot.settings.colour)
.setFooter(`${message.author.username}#${message.author.discriminator}`, message.author.displayAvatarURL)
message.channel.send(embed);
console.log(`\x1b[36m`, `${message.author} has executed ${bot.settings.prefix}${bot.settings.Say_Command}`)
const CMDLog = new Discord.RichEmbed()
.setTitle(bot.settings.Commands_Log_Title)
.addField(`User`, `<@${message.author.id}>`)
.addField(`Command`, bot.settings.Say_Command, true)
.addField(`Executed At`, message.createdAt, true)
.setColor(bot.settings.colour)
.setFooter(bot.settings.footer)
let CommandLog = message.guild.channels.find(LogsChannel => LogsChannel.name === `${bot.settings.Command_Log_Channel}`);
if(!CommandLog) return message.channel.send(`:x: Error! Could not find the logs channel. **${bot.settings.Command_Log_Channel}**\nThis can be changed via ``settings.json```);
CommandLog.send(CMDLog);
}
exports.help = {
name: bot.settings.Say_Command,
}
-294
View File
@@ -1,294 +0,0 @@
const Discord = require("discord.js");
const bot = new Discord.Client()
bot.settings = require("../settings.json");
exports.run = async (bot, message, args) => {
if (message.guild.owner === message.member) {
message.delete(1000);
const embed = new Discord.RichEmbed()
.setTitle("SupportBot Setup Mode")
.setColor("#fff")
.setDescription(`${bot.settings.botname} is about to enter **Setup Mode**.\nThis means that all the roles & channels that are\nrequired to allow supportbot to work will be created.`)
.setFooter("Setup mode will expire in 60 seconds")
message.channel.send(embed).then((msg) => {
msg.react("✅");
const filter = (reaction, user) => reaction.emoji.name === "✅" && user.id === message.author.id;
msg.awaitReactions(filter, {
max: 1,
time: 60000,
errors: ["time"]
}).then(async (collected) => {
msg.clearReactions();
const embed1 = new Discord.RichEmbed()
.setTitle("SupportBot Setup Mode")
.setColor("#fff")
.setDescription(`${bot.settings.botname} has activated **Setup Mode**\nPlease allow a couple minutes for the process to be complete.`)
msg.edit(embed1).then((m) => {
m.delete(5000);
m.edit(":white_check_mark: **Success!** You\'r server is ready, thanks for using SupportBot by Emerald Services.");
});
const reaction = collected.first();
if (reaction.emoji.name === "✅") {
// Roles
let supportRole = bot.settings.support;
let staffRole = bot.settings.staff;
let autoRole = bot.settings.Auto_Role;
let Department_Role_1 = bot.settings.Department_Role_1
let Department_Role_2 = bot.settings.Department_Role_2
let Department_Role_3 = bot.settings.Department_Role_3
// Channels & Categories
let generalCategory = bot.settings.General_Category;
let informationCategory = bot.settings.InformationCategory;
let ticketCategory = bot.settings.category;
let staffCategory = bot.settings.StaffCategory;
let accessChannel = bot.settings.Access_Channel;
let announceChannel = bot.settings.Announcement_Channel;
let suggestChannel = bot.settings.Suggestion_Channel;
let reportsChannel = bot.settings.Report_Channel;
let ticketsChannel = bot.settings.Tickets_Channel;
let ticketsVoice1 = bot.settings.TicketsVoice1;
let ticketsVoice2 = bot.settings.TicketsVoice2;
let generalChannel = bot.settings.GeneralChannel;
let pollsChannel = bot.settings.Poll_Channel;
let botSpam = bot.settings.BotSpam_Channel;
let staffGeneral = bot.settings.StaffChat;
let staffCommands = bot.settings.StaffCmds;
let staffVoice = bot.settings.StaffVoice;
let ticketLogs = bot.settings.Ticket_Logs;
let commandLogs = bot.settings.Command_Log_Channel;
// Information Category
await message.guild.createChannel(`${informationCategory}`, {
type: "category",
position: 1
}).then(async (cat) => {
await message.guild.createChannel(`${accessChannel}`, {
type: "text",
position: 1,
topic: `${bot.settings.Access_Topic}`,
parent: cat
});
await message.guild.createChannel(`${announceChannel}`, {
type: "text",
position: 2,
topic: `${bot.settings.Announcement_Topic}`,
parent: cat
});
await message.guild.createChannel(`${pollsChannel}`, {
type: "text",
position: 3,
topic: `${bot.settings.Poll_Topic}`,
parent: cat
});
await message.guild.createChannel(`${suggestChannel}`, {
type: "text",
position: 4,
topic: `${bot.settings.Suggestion_Topic}`,
parent: cat
});
await message.guild.createChannel(`${reportsChannel}`, {
type: "text",
position: 5,
topic: `${bot.settings.Report_Topic}`,
parent: cat
});
});
// General Category
await message.guild.createChannel(`${generalCategory}`, {
type: "category",
position: 2
}).then(async (cat) => {
await message.guild.createChannel(`${generalChannel}`, {
type: "text",
position: 1,
topic: `${bot.settings.GeneralTopic}`,
parent: cat
});
await message.guild.createChannel(`${botSpam}`, {
type: "text",
position: 2,
topic: `${bot.settings.BotSpam_Topic}`,
parent: cat
});
});
// Support Category
await message.guild.createChannel(`${ticketCategory}`, {
type: "category",
position: 3
}).then(async (cat) => {
await message.guild.createChannel(`${ticketsChannel}`, {
type: "text",
position: 1,
topic: `${bot.settings.Tickets_Topic}`,
parent: cat
});
await message.guild.createChannel(`${ticketsVoice1}`, {
type: "voice",
position: 2,
parent: cat,
userLimit: 2,
speakable: true,
joineable: true
});
await message.guild.createChannel(`${ticketsVoice2}`, {
type: "voice",
position: 3,
parent: cat,
userLimit: 2,
speakable: true,
joineable: true
});
});
// Staff Category (Private)
await message.guild.createChannel(`${staffCategory}`, {
type: "category",
position: 4
}).then(async (cat) => {
await message.guild.createChannel(`${staffGeneral}`, {
type: "text",
position: 1,
parent: cat
});
await message.guild.createChannel(`${staffCommands}`, {
type: "text",
position: 2,
parent: cat
});
await message.guild.createChannel(`${staffVoice}`, {
type: "voice",
position: 3,
parent: cat,
joineable: true,
speakable: true
});
await message.guild.createChannel(`${ticketLogs}`, {
type: "text",
position: 4,
parent: cat
});
await message.guild.createChannel(`${commandLogs}`, {
type: "text",
position: 5,
parent: cat
});
await message.guild.createRole({
name: `${staffRole}`,
color: "#ff0000",
position: 1,
permissions: {
"MANAGE_CHANNELS": true,
"MANAGE_GUILD": true,
"MENTION_EVERYONE": true,
"CREATE_INSTANT_INVITE": true,
"KICK_MEMBERS": true,
"VIEW_AUDIT_LOG": true,
"MANAGE_NICKNAMES": true,
"CONNECT": true,
"SPEAK": true,
"USE_EXTERNAL_EMOJIS": true,
"MANAGE_MESSAGES": true,
"PRIORITY_SPEAKER": true
},
mentionable: true
});
await message.guild.createRole({
name: `${autoRole}`,
color: "#ffffff",
position: 2,
permissions: {
"MANAGE_CHANNELS": false,
"MANAGE_GUILD": false,
"MENTION_EVERYONE": false,
"CREATE_INSTANT_INVITE": true,
"KICK_MEMBERS": false,
"VIEW_AUDIT_LOG": false,
"MANAGE_NICKNAMES": false,
"CONNECT": true,
"SPEAK": true,
"USE_EXTERNAL_EMOJIS": true,
"MANAGE_MESSAGES": false,
"PRIORITY_SPEAKER": false
},
mentionable: false
});
await message.guild.createRole({
name: `${Department_Role_1}`,
color: "#ffffff",
position: 2,
permissions: {
"MANAGE_CHANNELS": false,
"MANAGE_GUILD": false,
"MENTION_EVERYONE": false,
"CREATE_INSTANT_INVITE": true,
"KICK_MEMBERS": true,
"VIEW_AUDIT_LOG": true,
"MANAGE_NICKNAMES": true,
"CONNECT": true,
"SPEAK": true,
"USE_EXTERNAL_EMOJIS": true,
"MANAGE_MESSAGES": true,
"PRIORITY_SPEAKER": true
},
mentionable: false
});
await message.guild.createRole({
name: `${Department_Role_2}`,
color: "#ffffff",
position: 2,
permissions: {
"MANAGE_CHANNELS": false,
"MANAGE_GUILD": false,
"MENTION_EVERYONE": false,
"CREATE_INSTANT_INVITE": true,
"KICK_MEMBERS": true,
"VIEW_AUDIT_LOG": true,
"MANAGE_NICKNAMES": true,
"CONNECT": true,
"SPEAK": true,
"USE_EXTERNAL_EMOJIS": true,
"MANAGE_MESSAGES": true,
"PRIORITY_SPEAKER": true
},
mentionable: false
});
await message.guild.createRole({
name: `${Department_Role_3}`,
color: "#ffffff",
position: 2,
permissions: {
"MANAGE_CHANNELS": false,
"MANAGE_GUILD": false,
"MENTION_EVERYONE": false,
"CREATE_INSTANT_INVITE": true,
"KICK_MEMBERS": true,
"VIEW_AUDIT_LOG": true,
"MANAGE_NICKNAMES": true,
"CONNECT": true,
"SPEAK": true,
"USE_EXTERNAL_EMOJIS": true,
"MANAGE_MESSAGES": true,
"PRIORITY_SPEAKER": true
},
mentionable: false
});
});
} else {
return;
}
});
});
} else {
message.channel.send(":x: **Error:** You don't have permissions to use this command.").then((msg) => {
msg.delete(5000);
});
}
}
exports.help = {
name: bot.settings.Setup_Command
}
+45 -38
View File
@@ -1,53 +1,60 @@
// SupportBot // SupportBot 6.0, Created by Emerald Services
// Command: Suggest // Suggest Command
const Discord = require("discord.js"); const Discord = require("discord.js");
const bot = new Discord.Client() const fs = require("fs");
bot.settings = require("../settings.json"); const yaml = require('js-yaml');
const supportbot = yaml.load(fs.readFileSync('./supportbot-config.yml', 'utf8'));
exports.run = async(bot, message, args) => { module.exports = {
message.delete(); name: supportbot.SuggestCommand,
description: supportbot.SuggestionDesc,
const SuggestionEmbed = new Discord.RichEmbed() execute(message, args) {
.setTitle(`${bot.settings.Suggestion_Title}`) if (supportbot.DeleteMessages == "true") message.delete();
.setDescription(`\`\`\`${args.join(" ")}\`\`\`\nFrom <@${message.author.id}>`)
.setFooter(`${bot.settings.footer}`, message.author.avatarURL)
.setTimestamp(new Date())
.setColor(bot.settings.colour);
let sc = message.guild.channels.find(SuggestionChannel => SuggestionChannel.name === `${bot.settings.Suggestion_Channel}`); let locateChannel = message.guild.channels.cache.find(SuggestionChannel => SuggestionChannel.name === supportbot.SuggestionChannel);
if(!sc) return message.channel.send(`:x: Error! Could not find the suggestion channel **${bot.settings.Suggestion_Channel}**`);
sc.send(SuggestionEmbed) const errornochannel = new Discord.MessageEmbed()
.setTitle("Invalid Channel")
.setDescription(`${supportbot.InvalidChannel}\n\nChannel Required: \`${supportbot.SuggestionChannel}\``)
.setColor(supportbot.ErrorColour);
.then(async function(msg) { if(!locateChannel) return message.channel.send({ embed: errornochannel });
msg.react(bot.settings.suggestyes).then(() => msg.react(bot.settings.suggestno));
});
const SuggestionSuccessEmbed = new Discord.RichEmbed() const embed = new Discord.MessageEmbed()
.setDescription(`:white_check_mark: You have successfully created your suggestion. <#${sc.id}>`) .setDescription(`> **${supportbot.SuggestionStarter}**`)
.setColor(bot.settings.colour) .setColor(supportbot.EmbedColour)
message.channel.send(SuggestionSuccessEmbed); message.channel.send({ embed: embed });
console.log(`\x1b[36m`, `${message.author} has executed ${bot.settings.prefix}${bot.settings.Suggest_Command}`) let suggestion = []
message.channel.awaitMessages(response => response.content.length > 2, {
max: 1,
time: 500000,
errors: ['time'],
}).then((collected) => {
suggestion.push(collected.map(r => r.content));
const CMDLog = new Discord.RichEmbed() const SuggestionMessage = new Discord.MessageEmbed()
.setTitle(bot.settings.Commands_Log_Title) .setColor(supportbot.EmbedColour)
.addField(`User`, `<@${message.author.id}>`) .setFooter(supportbot.EmbedFooter)
.addField(`Command`, bot.settings.Suggest_Command, true)
.addField(`Channel`, message.channel, true)
.addField(`Executed At`, message.createdAt, true)
.setColor(bot.settings.colour)
.setFooter(bot.settings.footer)
let CommandLog = message.guild.channels.find(LogsChannel => LogsChannel.name === `${bot.settings.Command_Log_Channel}`); .setTitle(supportbot.SuggestionTitle)
if(!CommandLog) return message.channel.send(`:x: Error! Could not find the logs channel. **${bot.settings.Command_Log_Channel}**`); .setDescription(`\`\`\`${suggestion}\`\`\``)
CommandLog.send(CMDLog); .addFields( { name: "From", value: `<@${message.author.id}>`, inline: false }, )
} locateChannel.send({ embed: SuggestionMessage }).then(async function(msg) {
msg.react(supportbot.SuggestReact_1).then(() => msg.react(supportbot.SuggestReact_2));
});
exports.help = { const SuggestionComplete = new Discord.MessageEmbed()
name: bot.settings.Suggest_Command, .setColor(supportbot.SuccessColour)
} .setDescription(`:white_check_mark: Your suggestion has been successfully created. <#${locateChannel.id}>`)
message.channel.send({ embed: SuggestionComplete })
});
}
};
-186
View File
@@ -1,186 +0,0 @@
// SupportBot
// Command: Ticket
const Discord = require("discord.js");
const bot = new Discord.Client()
bot.settings = require("../settings.json");
exports.run = (bot, message, args) => {
message.delete();
const ID = Math.floor(Math.random() * 10) + 2000;
const subject = args.join(" ") || `${bot.settings.Default_Ticket_Reason}`;
// Ticket Reactions
const reactembed = new Discord.RichEmbed()
.setColor(bot.settings.colour)
.setDescription(`${bot.settings.Ticket_React_Message}`);
message.channel.send(reactembed)
.then(function(msg) {
msg.react('✅').then(() => msg.react('❎'));
const filter = (reaction, user) => {
return ['✅', '❎'].includes(reaction.emoji.name) && user.id !== msg.author.id;
};
msg.awaitReactions(filter, { max: 1, time: 60000, errors: ['time'] })
.then(collected => {
const reaction = collected.first();
if (reaction.emoji.name === '❎') {
const successEmbed = new Discord.RichEmbed()
.setDescription(`:tickets: <@${message.author.id}> You have canceled your support request.`)
.setColor(bot.settings.colour);
message.channel.send(successEmbed);
}
if (reaction.emoji.name === '✅') {
const alreadyopen = new Discord.RichEmbed()
.setDescription(`:x: Cannot create a ticket because **ticket-${message.author.username}** already exists.`)
.setColor(bot.settings.colour)
if (message.guild.channels.find(TicketChannel => TicketChannel.name === 'ticket-' + message.author.username)) return message.channel.send(alreadyopen);
message.guild.createChannel(`ticket-${message.author.username}`, {
type: 'text',
}).then(TicketChannel => {
// Roles
let staff = message.guild.roles.find(supportRole => supportRole.name === `${bot.settings.staff}`)
let everyone = message.guild.roles.find(everyoneRole => everyoneRole.name === "@everyone")
let department = message.guild.roles.find(DepartmentRole => DepartmentRole.name === `${bot.settings.Department_Role_1}`)
let department2 = message.guild.roles.find(DepartmentRole => DepartmentRole.name === `${bot.settings.Department_Role_2}`)
let department3 = message.guild.roles.find(DepartmentRole => DepartmentRole.name === `${bot.settings.Department_Role_3}`)
// Permissions
TicketChannel.overwritePermissions(everyone, { SEND_MESSAGES: false, READ_MESSAGES: false })
TicketChannel.overwritePermissions(department, { SEND_MESSAGES: false, READ_MESSAGES: false })
TicketChannel.overwritePermissions(department2, { SEND_MESSAGES: false, READ_MESSAGES: false })
TicketChannel.overwritePermissions(department3, { SEND_MESSAGES: false, READ_MESSAGES: false })
TicketChannel.overwritePermissions(staff, { SEND_MESSAGES: true, READ_MESSAGES: true })
TicketChannel.overwritePermissions(message.author, { SEND_MESSAGES: true, READ_MESSAGES: true })
TicketChannel.overwritePermissions(bot.user, { SEND_MESSAGES: true, READ_MESSAGES: true })
// Category
let category = message.guild.channels.find(c => c.name === bot.settings.category);
if (category) {
TicketChannel.setParent(category.id);
} else {
if (message.guild.channels.get(bot.settings.category)) {
TicketChannel.setParent(message.guild.channels.get(bot.settings.category).id);
}
}
const ticketopened = new Discord.RichEmbed()
.setDescription(`:white_check_mark: <@${message.author.id}> You ticket has been created <#${TicketChannel.id}>`)
.setColor(bot.settings.colour)
message.channel.send({embed: ticketopened});
// Ticket Message - ( Able to edit this message via the settings.json file )
const ticketMessage = `Hi! <@${message.author.id}>\n${bot.settings.Ticket_Message}`;
const Department_1 = bot.settings.Ticket_Department_1;
const Department_2 = bot.settings.Ticket_Department_2;
const Department_3 = bot.settings.Ticket_Department_3;
const Emoji_1 = bot.settings.Ticket_Department_Emoji_1;
const Emoji_2 = bot.settings.Ticket_Department_Emoji_2;
const Emoji_3 = bot.settings.Ticket_Department_Emoji_3;
const TicketMessage = new Discord.RichEmbed()
.setDescription(ticketMessage, true)
.addField("Available Departments", `${Emoji_1} ${Department_1}\n${Emoji_2} ${Department_2}\n${Emoji_3} ${Department_3}`)
.setColor(bot.settings.colour)
.setFooter(bot.settings.footer)
if (subject != 'No Subject.') {
TicketChannel.setTopic(subject);
}
TicketChannel.send({embed: TicketMessage}).then(function(msg) {
msg.react(Emoji_1).then(() => msg.react(Emoji_2)).then(() => msg.react(Emoji_3));
const filter = (reaction, user) => {
return [Emoji_1, Emoji_2, Emoji_3].includes(reaction.emoji.name) && user.id !== msg.author.id;
};
msg.awaitReactions(filter, { max: 1, time: 60000, errors: ['time'] })
.then(collected => {
const reaction = collected.first();
if (reaction.emoji.name === `${Emoji_1}`) {
TicketChannel.overwritePermissions(staff, { SEND_MESSAGES: true, READ_MESSAGES: true })
TicketChannel.overwritePermissions(department, { SEND_MESSAGES: true, READ_MESSAGES: true })
msg.channel.send("You have contacted out " + department + "\nPlease wait patiently for somone to reach out to you.")
}
if (reaction.emoji.name === `${Emoji_2}`) {
TicketChannel.overwritePermissions(staff, { SEND_MESSAGES: true, READ_MESSAGES: true })
TicketChannel.overwritePermissions(department2, { SEND_MESSAGES: true, READ_MESSAGES: true })
msg.channel.send("You have contacted out " + department2 + "\nPlease wait patiently for somone to reach out to you.")
}
if (reaction.emoji.name === `${Emoji_3}`) {
TicketChannel.overwritePermissions(staff, { SEND_MESSAGES: true, READ_MESSAGES: true })
TicketChannel.overwritePermissions(department3, { SEND_MESSAGES: true, READ_MESSAGES: true })
msg.channel.send("You have contacted out " + department3 + "\nPlease wait patiently for somone to reach out to you.")
}
});
});
// Ticket Logging
const logEmbed = new Discord.RichEmbed()
.setTitle(":ticket: Logistics of your Ticket")
.addField("Ticket ID", ID, true)
.addField("User", `<@${message.author.id}>`, true)
.addField("Channel", `ticket#${ID}`, true)
.setColor(bot.settings.colour)
.setFooter(bot.settings.footer)
if (subject != 'No Subject.') {
logEmbed.addField('Subject', subject, true);
}
let logChannel = message.guild.channels.find(TicketChannel => TicketChannel.name === `${bot.settings.Ticket_Logs}`);
if(!logChannel) return message.channel.send(`:x: Error! Could not find the logs channel **${bot.settings.Ticket_Logs}**`);
logChannel.send({embed: logEmbed})
}).catch(err=>{console.error(err)});
console.log(`\x1b[36m`, `${message.author} has executed ${bot.settings.prefix}${bot.settings.Ticket_Command}`)
const CMDLog = new Discord.RichEmbed()
.setTitle(bot.settings.Commands_Log_Title)
.addField(`User`, `<@${message.author.id}>`)
.addField(`Command`, bot.settings.Ticket_Command, true)
.addField(`Channel`, message.channel, true)
.addField(`Executed At`, message.createdAt, true)
.setColor(bot.settings.colour)
.setFooter(bot.settings.footer)
let CommandLog = message.guild.channels.find(LogsChannel => LogsChannel.name === `${bot.settings.Command_Log_Channel}`);
if(!CommandLog) return message.channel.send(`:x: Error! Could not find the logs channel. **${bot.settings.Command_Log_Channel}**\nThis can be changed via ``settings.json```);
CommandLog.send(CMDLog);
}
})
})
};
exports.help = {
name: bot.settings.Ticket_Command,
}
-52
View File
@@ -1,52 +0,0 @@
// SupportBot
// Command: Lockchat
const Discord = require("discord.js");
const bot = new Discord.Client()
bot.settings = require("../settings.json");
exports.run = async(bot, message, args) => {
message.delete();
let staffGroup = message.guild.roles.find(staffRole => staffRole.name === `${bot.settings.staff}`)
let lockedRole = message.guild.roles.find(lc => lc.name === `${bot.settings.locked_role}`)
const rolemissing = new Discord.RichEmbed()
.setDescription(`:x: Looks like this server doesn't have the role **${bot.settings.staff}**`)
.setColor(bot.settings.colour)
if (!staffGroup) return message.reply(rolemissing).catch(err=>{console.error(err)})
const donothaverole = new Discord.RichEmbed()
.setDescription(`:x: Sorry! You cannot use this command with the role **${bot.settings.staff}**`)
.setColor(bot.settings.colour)
if (!message.member.roles.has(staffGroup.id)) return message.reply(donothaverole)
message.channel.overwritePermissions(lockedRole, { READ_MESSAGES: true, SEND_MESSAGES: true });
message.channel.overwritePermissions(staffGroup, { READ_MESSAGES: true, SEND_MESSAGES: true });
const lockmsg = new Discord.RichEmbed()
.setDescription(":white_check_mark: **Chat Un-Locked**")
.setColor(bot.settings.colour)
message.channel.send(lockmsg)
console.log(`\x1b[36m`, `${message.author} has executed ${bot.settings.prefix}${bot.settings.UnLockchat_Command}`)
const CMDLog = new Discord.RichEmbed()
.setTitle(bot.settings.Commands_Log_Title)
.addField(`User`, `<@${message.author.id}>`)
.addField(`Command`, bot.settings.UnLockchat_Command, true)
.addField(`Executed At`, message.createdAt, true)
.setColor(bot.settings.colour)
.setFooter(bot.settings.footer)
let CommandLog = message.guild.channels.find(LogsChannel => LogsChannel.name === `${bot.settings.Command_Log_Channel}`);
if(!CommandLog) return message.channel.send(`:x: Error! Could not find the logs channel. **${bot.settings.Command_Log_Channel}**\nThis can be changed via ``settings.json```);
CommandLog.send(CMDLog);
}
exports.help = {
name: bot.settings.UnLockchat_Command,
}
+49
View File
@@ -0,0 +1,49 @@
// SupportBot 6.0, Created by Emerald Services
// Ready Event
const Discord = require("discord.js");
const fs = require("fs");
const yaml = require('js-yaml');
const supportbot = yaml.load(fs.readFileSync('./supportbot-config.yml', 'utf8'));
module.exports = async (bot, member) => {
if (supportbot.SystemMessages === "true") {
const SystemChannel = member.guild.channels.cache.find(channel => channel.name === supportbot.SystemMessage_Channel)
if (!SystemChannel) return;
console.log(`[${supportbot.Bot_Name}]: ${member.user.username} has joined ${member.guild.name}!`)
console.log(supportbot.AutoRole_Role)
if (supportbot.SystemMessage_Type === "embed") {
const GuildAddMember = new Discord.MessageEmbed()
.setTitle(supportbot.Welcome_Title)
.setDescription(supportbot.WelcomeMessage.replace(/%member%/g, member.user.username).replace(/%guildname%/g, member.guild.name))
.setColor(supportbot.EmbedColour)
if (supportbot.SystemMessage_Icon === "BOT") {
GuildAddMember.setThumbnail(bot.user.displayAvatarURL())
}
if (supportbot.SystemMessage_Icon === "USER") {
GuildAddMember.setThumbnail(member.user.displayAvatarURL())
}
if (supportbot.SystemMessage_EmbedFooter === "true") {
GuildAddMember.setFooter(supportbot.EmbedFooter)
}
SystemChannel.send({ embed: GuildAddMember });
}
if (supportbot.SystemMessage_Type === "normal") {
SystemChannel.send(supportbot.WelcomeMessage.replace(/%member%/g, member.user.username).replace(/%guildname%/g, member.guild.name))
}
}
};
+48
View File
@@ -0,0 +1,48 @@
// SupportBot 6.0, Created by Emerald Services
// Ready Event
const Discord = require("discord.js");
const fs = require("fs");
const yaml = require('js-yaml');
const supportbot = yaml.load(fs.readFileSync('./supportbot-config.yml', 'utf8'));
module.exports = async (bot, member) => {
if (supportbot.SystemMessages === "true") {
const SystemChannel = member.guild.channels.cache.find(channel => channel.name === supportbot.SystemMessage_Channel)
if (!SystemChannel) return;
console.log(`[${supportbot.Bot_Name}]: ${member.user.username} has left ${member.guild.name}!`)
if (supportbot.SystemMessage_Type === "embed") {
const GuildRemoveMember = new Discord.MessageEmbed()
.setTitle(supportbot.Leave_Title)
.setDescription(supportbot.LeaveMessage.replace(/%member%/g, member.user.username).replace(/%guildname%/g, member.guild.name))
.setColor(supportbot.EmbedColour)
if (supportbot.SystemMessage_Icon === "BOT") {
GuildRemoveMember.setThumbnail(bot.user.displayAvatarURL())
}
if (supportbot.SystemMessage_Icon === "USER") {
GuildRemoveMember.setThumbnail(member.user.displayAvatarURL())
}
if (supportbot.SystemMessage_EmbedFooter === "true") {
GuildRemoveMember.setFooter(supportbot.EmbedFooter)
}
SystemChannel.send({ embed: GuildRemoveMember });
}
if (supportbot.SystemMessage_Type === "normal") {
SystemChannel.send(supportbot.LeaveMessage.replace(/%member%/g, member.user.username).replace(/%guildname%/g, member.guild.name))
}
}
};
+22
View File
@@ -0,0 +1,22 @@
// SupportBot 6.0, Created by Emerald Services
// Message Event
const Discord = require("discord.js");
const fs = require("fs");
const yaml = require('js-yaml');
const supportbot = yaml.load(fs.readFileSync('./supportbot-config.yml', 'utf8'));
module.exports = async (bot, message) => {
if(message.author.bot) return;
if(message.channel.type === "dm") return;
if (message.content.indexOf(supportbot.Prefix) !== 0) return;
let messageArray = message.content.split(" ");
const args = message.content.slice(supportbot.Prefix.length).trim().split(/ +/g);
const command = args.shift().toLowerCase();
const cmd = bot.commands.get(command);
if(!cmd) return;
cmd.execute(message, args);
};
+19
View File
@@ -0,0 +1,19 @@
// SupportBot 6.0, Created by Emerald Services
// Ready Event
const Discord = require("discord.js");
const fs = require("fs");
const yaml = require('js-yaml');
const supportbot = yaml.load(fs.readFileSync('./supportbot-config.yml', 'utf8'));
module.exports = async (bot) => {
bot.user.setActivity(supportbot.BotActivity, {
type: supportbot.ActvityType
});
console.log(`\u001b[32m`, `―――――――――――――――――― SupportBot ――――――――――――――――――`)
console.log(`\u001b[37m`, `${supportbot.Bot_Name} has successfully connected to discord`)
console.log(`\u001b[32m`, `―――――――――――――――――― SupportBot ――――――――――――――――――`)
};
+70 -99
View File
@@ -1,119 +1,90 @@
// ____ _ ____ _ // _________ __ __________ __
// / ___| _ _ _ __ _ __ ___ _ __| |_| __ ) ___ | |_ // / _____/__ ________ ______ ____________/ |\______ \ _____/ |_
// \___ \| | | | '_ \| '_ \ / _ \| '__| __| _ \ / _ \| __| // \_____ \| | \____ \\____ \ / _ \_ __ \ __\ | _// _ \ __\
// ___) | |_| | |_) | |_) | (_) | | | |_| |_) | (_) | |_ // / \ | / |_> > |_> > <_> ) | \/| | | | ( <_> ) |
// |____/ \__,_| .__/| .__/ \___/|_| \__|____/ \___/ \__| // /_______ /____/| __/| __/ \____/|__| |__| |______ /\____/|__|
// |_| |_| // \/ |__| |__| \/
//
// Resource: SupportBot // SupportBot version 6.0.2
// Developed by Emerald Services // Created by Emerald Services
// Version: 4.2.0 // Installed with MIT License
const Discord = require("discord.js"); const Discord = require("discord.js");
const fs = require("fs"); const fs = require("fs");
const bot = new Discord.Client(); const bot = new Discord.Client();
bot.commands = new Discord.Collection(); bot.commands = new Discord.Collection();
bot.settings = require("./settings.json");
const yaml = require('js-yaml');
const supportbot = yaml.load(fs.readFileSync('./supportbot-config.yml', 'utf8'));
const { promisify } = require("util");
const readdir = promisify(require("fs").readdir);
String.prototype.toProperCase = function () {
return this.replace(
/([^\W_]+[^\s-]*) */g,
(txt) => txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase()
);
};
const init = async () => {
const evtFiles = await readdir("./events/");
evtFiles.forEach((file, i) => {
const eventName = file.split(".")[0];
const event = require(`./events/${file}`);
console.info(`\u001b[37m`, `[${supportbot.Bot_Name}]:`, `\u001b[31m`, `#${i + 1} Event Loaded: ${eventName.toProperCase()} `);
bot.on(eventName, event.bind(null, bot));
delete require.cache[require.resolve(`./events/${file}`)];
});
console.info(`\u001b[37m`, `[${supportbot.Bot_Name}]:`, `\u001b[32m`, `Successfully loaded ${evtFiles.length} events.`);
console.info(`\u001b[37m`, "-----------------------------------------------------------------------------");
};
init();
fs.readdir("./commands/", (err, files) => { fs.readdir("./commands/", (err, files) => {
if(err) console.log(err); if (err) console.info(err, "error");
let jsfile = files.filter(f => f.split(".").pop() === "js") let jsfiles = files.filter((f) => f.split(".").pop() === "js");
if(jsfile.length <= 0) return console.log(`${bot.settings.botname} No commands found. Try to Re-download the resource`);
jsfile.forEach((f, i) =>{ if (jsfiles.length <= 0) {
let props = require(`./commands/${f}`); console.log(`[${supportbot.Bot_Name}]: No commands found. Try to Re-download the resource`);
console.log(`[${bot.settings.botname}] > Command Loaded > ${f}`); return;
bot.commands.set(props.help.name, props); }
jsfiles.forEach((f, i) => {
let props = require(`./commands/${f}`);
console.info(`\u001b[37m`, `[${supportbot.Bot_Name}]:`, `\u001b[31m`, `#${i + 1} Command Loaded: ${props.name.toProperCase()}`);
bot.commands.set(props.name, props);
}); });
}); console.info(`\u001b[37m`, `[${supportbot.Bot_Name}]:`, `\u001b[32m`, `Loaded ${jsfiles.length} commands!`);
console.info(`\u001b[37m`, "-----------------------------------------------------------------------------");
});
bot.addons = new Discord.Collection(); fs.readdir("./addons/", (err, files) => {
if (err) console.info(err, "error");
fs.readdir("./sb-addons/", (err, files) => { let jsfiles = files.filter((f) => f.split(".").pop() === "js");
if(err) console.log(err);
let jsfile = files.filter(f => f.split(".").pop() === "js") if (jsfiles.length <= 0) {
if(jsfile.length <= 0) return console.log(`${bot.settings.botname} No addons detected nor default! Either download addons from https://itzemerald.tk/`); console.log(`[${supportbot.Bot_Name}]: No addons found. You can download addons from https://emeraldservices.xyz`);
return;
}
jsfile.forEach((f, i) =>{ jsfiles.forEach((f, i) => {
let props = require(`./sb-addons/${f}`); let props = require(`./addons/${f}`);
console.log(`[${bot.settings.botname}] > Addons Loaded > ${f}`); console.info(`\u001b[37m`, `[${supportbot.Bot_Name}]:`, `\u001b[31m`, `#${i + 1} Command Loaded: ${props.name.toProperCase()}`);
bot.addons.set(props.help.name, props); bot.commands.set(props.name, props);
}); });
}); console.info(`\u001b[37m`, `[${supportbot.Bot_Name}]:`, `\u001b[32m`, `Loaded ${jsfiles.length} commands!`);
console.info(`\u001b[37m`, "-----------------------------------------------------------------------------");
bot.on("ready", async () => {
bot.user.setActivity(bot.settings.BotStatus, {type:"PLAYING"});
console.log(`\u001b[31m`, `------------[ SupportBot ]------------`)
console.log(`\u001b[32m`, `Thank you for using SupportBot\n If you have any issues\n contact our team and we will\n give you furthur instructions\nContact us on discord if you require any support discord.gg/SPKDBX9`)
console.log(`\u001b[31m`, `------------[ SupportBot ]------------`)
console.log(`\u001b[31m`, `\n\n------------[ SupportBot Stats ]------------`)
console.log(`\u001b[32m`, `Bot Username: ${bot.user.username}\nInvite Link: https://discordapp.com/api/oauth2/authorize?client_id=${bot.user.username}&permissions=8&scope=bot`)
console.log(`\u001b[31m`, `------------[ SupportBot Stats ]------------`)
}); });
bot.on("message", async message => { bot.login(supportbot.Token);
if(message.author.bot) return;
if(message.channel.type === "dm") return;
if (message.content.indexOf(bot.settings.prefix) !== 0) return;
let messageArray = message.content.split(" ");
const args = message.content.slice(bot.settings.prefix.length).trim().split(/ +/g);
const command = args.shift().toLowerCase();
const cmd = bot.commands.get(command);
if(!cmd) return;
cmd.run(bot, message, args);
});
bot.on("message", async message => {
if(message.author.bot) return;
if(message.channel.type === "dm") return;
if (message.content.indexOf(bot.settings.prefix) !== 0) return;
let messageArray = message.content.split(" ");
const args = message.content.slice(bot.settings.prefix.length).trim().split(/ +/g);
const addon = args.shift().toLowerCase();
const cmd = bot.addons.get(addon);
if(!cmd) return;
cmd.run(bot, message, args);
});
// [SupportBot] Welcome Message && Auto Join Role
bot.on("guildMemberAdd", (member) => {
let channel = member.guild.channels.find(channel => channel.name === `${bot.settings.Welcome_Channel}`)
let autorole = member.guild.roles.find(autorole => autorole.name === `${bot.settings.Auto_Role}`)
const WelcomeMsg= new Discord.RichEmbed()
.setColor(bot.settings.colour)
.setThumbnail(member.user.avatarURL)
.setDescription(`:wave: ${member.user.username}\n${bot.settings.Welcome_Message}`)
channel.send(WelcomeMsg);
member.addRole(autorole).catch(console.error);
});
// [SupportBot] Leave Message
bot.on("guildMemberRemove", (member) => {
let channel = member.guild.channels.find(channel => channel.name === `${bot.settings.Leave_Channel}`)
const LeaveMsg= new Discord.RichEmbed()
.setColor(bot.settings.colour)
.setThumbnail(member.user.avatarURL)
.setDescription(`:wave: ${member.user.username}\n${bot.settings.Leave_Message}`)
channel.send(LeaveMsg);
});
bot.login(bot.settings.token);
+132 -3
View File
@@ -1,5 +1,134 @@
{ {
"name": "SupportBot", "name": "supportbot",
"version": "4.0", "version": "6.0.0",
"lockfileVersion": 1 "lockfileVersion": 1,
"requires": true,
"dependencies": {
"@discordjs/collection": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.1.5.tgz",
"integrity": "sha512-CU1q0UXQUpFNzNB7gufgoisDHP7n+T3tkqTsp3MNUkVJ5+hS3BCvME8uCXAUFlz+6T2FbTCu75A+yQ7HMKqRKw=="
},
"@discordjs/form-data": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/@discordjs/form-data/-/form-data-3.0.1.tgz",
"integrity": "sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg==",
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"mime-types": "^2.1.12"
}
},
"abort-controller": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
"integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
"requires": {
"event-target-shim": "^5.0.0"
}
},
"argparse": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"requires": {
"sprintf-js": "~1.0.2"
}
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
},
"combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"requires": {
"delayed-stream": "~1.0.0"
}
},
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
},
"discord.js": {
"version": "12.2.0",
"resolved": "https://registry.npmjs.org/discord.js/-/discord.js-12.2.0.tgz",
"integrity": "sha512-Ueb/0SOsxXyqwvwFYFe0msMrGqH1OMqpp2Dpbplnlr4MzcRrFWwsBM9gKNZXPVBHWUKiQkwU8AihXBXIvTTSvg==",
"requires": {
"@discordjs/collection": "^0.1.5",
"@discordjs/form-data": "^3.0.1",
"abort-controller": "^3.0.0",
"node-fetch": "^2.6.0",
"prism-media": "^1.2.0",
"setimmediate": "^1.0.5",
"tweetnacl": "^1.0.3",
"ws": "^7.2.1"
}
},
"esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
},
"event-target-shim": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
"integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="
},
"js-yaml": {
"version": "3.14.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz",
"integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==",
"requires": {
"argparse": "^1.0.7",
"esprima": "^4.0.0"
}
},
"mime-db": {
"version": "1.44.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
"integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg=="
},
"mime-types": {
"version": "2.1.27",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
"integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
"requires": {
"mime-db": "1.44.0"
}
},
"node-fetch": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
"integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
},
"prism-media": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.2.2.tgz",
"integrity": "sha512-I+nkWY212lJ500jLe4tN9tWO7nRiBAVdMv76P9kffZjYhw20raMlW1HSSvS+MLXC9MmbNZCazMrAr+5jEEgTuw=="
},
"setimmediate": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
"integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
},
"sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
},
"tweetnacl": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz",
"integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw=="
},
"ws": {
"version": "7.3.1",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz",
"integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA=="
}
}
} }
+15 -26
View File
@@ -1,37 +1,26 @@
{ {
"name": "SupportBot", "name": "supportbot",
"version": "4.0", "version": "6.0.0",
"description": "SupportBot", "description": "SupportBot | #1 Self-Hosted Ticket Bot",
"main": "index.js", "main": "index.js",
"private": "true",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node index.js"
},
"engines": {
"node": "12.6.0",
"npm": "6.9.0"
},
"dependencies": { "dependencies": {
"array-sort": "^1.0.0", "discord.js": "^12.2.0",
"discord.js": "^11.5.1", "js-yaml": "^3.14.0"
"table": "^5.4.4" },
"devDependencies": {
"node-fetch": ">=2.6.1"
},
"scripts": {
"test": "help"
}, },
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/EmeraldRusher/SupportBot.git" "url": "git+https://github.com/1tzemerald/SupportBot.git"
}, },
"keywords": [
"SupportBot",
"Emerald Services"
],
"author": "Emerald Services", "author": "Emerald Services",
"license": "MIT",
"bugs": { "bugs": {
"url": "https://github.com/EmeraldRusher/SupportBot/issues" "url": "https://github.com/1tzemerald/SupportBot/issues"
}, },
"homepage": "https://discord.gg/hmWgxdF", "homepage": "https://emeraldservices.xyz"
"contributors": [
"iJosGCS",
"RedstoneGamez"
]
} }
-18
View File
@@ -1,18 +0,0 @@
// SupportBot Addons
// Default Addon
const Discord = require("discord.js");
const bot = new Discord.Client()
bot.settings = require("../settings.json");
exports.run = async(bot, message, args) => {
message.delete();
message.channel.send(":white_check_mark: **SupportBot Addon**\nThis addon is here by default.\nWe are currently working on some super amazing addons for SupportBot\nHowever, If you would like to start creating your own support bot addon\ncontact us at EmeraldServices.\n")
}
exports.help = {
name: 'addon',
}
-101
View File
@@ -1,101 +0,0 @@
{
"SupportBot": "v4.2.0",
"token": "BOT_TOKEN_HERE",
"prefix": "dev-",
"botname": "SupportBot",
"colour": "#13bd2a",
"footer": "Support Bot, By Emerald Services",
"BotStatus": "Support Bot",
"staff": "Staff",
"locked_role": "@everyone",
"everyone": "@everyone",
"Auto_Role": "Member",
"Department_Role_1": "Support",
"Department_Role_2": "Security",
"Department_Role_3": "Sales",
"category": "Tickets",
"Ticket_Message": "Your support ticket has been opened successfully\nPlease allow us some time to reach out to you.",
"Ticket_Logs": "ticket-logs",
"Default_Ticket_Reason": "No Subject",
"Ticket_React_Message": ":mailbox: React to create your support ticket.",
"Ticket_Department_1": "Support",
"Ticket_Department_2": "Security",
"Ticket_Department_3": "Sales",
"Ticket_Department_Emoji_1": "🎧",
"Ticket_Department_Emoji_2": "🔐",
"Ticket_Department_Emoji_3": "💵",
"General_Category": "General",
"InformationCategory": "Information",
"StaffCategory": "Staff",
"Access_Channel": "welcome",
"GeneralChannel": "general",
"BotSpam_Channel": "bot-spam",
"Tickets_Channel": "open-a-ticket",
"StaffChat": "staff-chat",
"StaffCmds": "staff-commands",
"StaffVoice": "Staff Room",
"TicketsVoice1": "Support Lounge",
"TicketsVoice2": "Support Lounge",
"Commands_Log_Title": "SupportBot Logs",
"Command_Log_Channel": "command-logs",
"Announcement_Title": "SupportBot Announcement",
"Announcement_Channel": "announcements",
"Announcement_Tag_Role": "@everyone",
"Welcome_Message": "Welcome to the server!",
"Welcome_Channel": "welcome",
"Leave_Message": "Thank you for visiting us!",
"Leave_Channel": "welcome",
"Poll_Channel": "polls",
"Poll_Title": "📊 Polls",
"Reaction_Poll_1": "✅",
"Reaction_Poll_2": "❎",
"Suggestion_Title": "SupportBot Suggestions",
"Suggestion_Channel": "suggestions",
"suggestyes": "✅",
"suggestno": "❎",
"Report_Channel": "reports",
"Report_Title": "SupportBot Report",
"LINKS_TITLE": "SupportBot Links",
"LINKS": {
"Discord": "https://discord.gg/",
"Twitter": "https://twitter.com/",
"Website": "https://example.com/",
"AddMore": "AddMoreIfYouWant"
},
"Announcement_Command": "announce",
"Say_Command": "say",
"Suggest_Command": "suggest",
"Ping_Command": "ping",
"Ticket_Command": "ticket",
"Remove_Command": "remove",
"Add_Command": "add",
"Close_Command": "close",
"Forceclose_Command": "forceclose",
"Rename_Command": "rename",
"Help_Command": "help",
"Link_Command": "links",
"Lockchat_Command": "lock",
"UnLockchat_Command": "unlock",
"Poll_Command": "poll",
"Report_Command": "report",
"Setup_Command": "setup"
}
+4
View File
@@ -0,0 +1,4 @@
{
"ticket": "ticket-0064",
"id":207937608779694080
}
+5
View File
@@ -0,0 +1,5 @@
{
"716992597377286145": {
"id": 65
}
}
+188
View File
@@ -0,0 +1,188 @@
# _________ __ __________ __
# / _____/__ ________ ______ ____________/ |\______ \ _____/ |_
# \_____ \| | \____ \\____ \ / _ \_ __ \ __\ | _// _ \ __\
# / \ | / |_> > |_> > <_> ) | \/| | | | ( <_> ) |
# /_______ /____/| __/| __/ \____/|__| |__| |______ /\____/|__|
# \/ |__| |__| \/
#
# SupportBot version 6.0.2
# Created by Emerald Services
# Installed with MIT License
# General Bot Configuration
Token: "BOT_TOKEN_HERE"
Prefix: "-"
Bot_Name: "SupportBot"
BotActivity: "-help ~ SupportBot 6.0"
ActivityType: "PLAYING"
# Activity status can either be PLAYING, WATCHING or LISTENING.
DeleteMessages: "true"
# Embed Configuration
EmbedColour: "#04b545"
EmbedFooter: "SupportBot | The #1 Supportive Discord Bot"
ErrorColour: "#d12519"
SuccessColour: "#04b545"
WarningColour: "#fca117"
# Role Configuration
AutoRole: "true"
# By setting "AutoRole to 'true' the bot will automatically apply the role below when members joins. Set to 'false' to disable this feature.
AutoRole_Role: "Member"
LockdownRole: "@everyone"
Staff: "Support"
Admin: "Admin"
# Ticket Configuration
TicketChannel: "ticket"
TicketCategory: "Tickets"
TicketLog: "ticket-logs"
TranscriptLog: "transcripts"
TicketSubject: "description"
# TicketSuvject: "description" means that the subject (reason) of the ticket will be displayed upon the channel description if set to "embed" it will be displayed within the embed.
Ticket_Thumbnail: "https://images.emojiterra.com/google/android-pie/512px/1f39f.png"
Ticket_Title: "Server Support | %ticketusername%"
TicketMessage: "Hello <@%ticketauthor%>, Thank you for creating a support ticket\nPlease wait patiently whilst a member of our team reaches out to you."
NoTicketSubject: "No Reason Provided!"
TicketCreatedAlert: ":ticket: Your support ticket has been created: <#%ticketid%>"
TranscriptTitle: "Ticket Transcript"
AddedUser: "👍 <@%user%> has been added to this ticket"
RemovedUser: "👍 <@%user%> has been removed from this ticket"
ClosingTicket: ":warning: You have requested to close your support ticket."
ClosingConfirmation_Word: "confirm"
CloseConfirmation: "true"
# CloseConfirmation to true will make users confirm that they want to close a their ticket, settings to false will just close the ticket.
# Ticket Department Configuration
TicketDepartments: "true"
# This option enable or disable the ticket departments. If set false Ticket Departments will not work
AllowStaff: "true"
# AllowStaff is an option to whether or not you want the users with the "Staff" role to be able to view inside tickets. If set false "Staff" will not view tickets.
DepartmentEmoji_1: "🙋"
DepartmentEmoji_2: "💸"
DepartmentEmoji_3: "📗"
# Ticket emojis, the emojis are what users will need to react with inorder to proceed furthur if departments are enabled.
DepartmentTitle_1: "Support"
DepartmentTitle_2: "Billing"
DepartmentTitle_3: "Other"
# Ticket department title, This is the title for a ticket department to help users know what is available.
DepartmentRole_1: "Support"
DepartmentRole_2: "Admin"
DepartmentRole_3: "Support"
# Ticket roles are the roles that will be able to gain access to tickets depending on what department has been choosen.
# System Message Configuration
SystemMessages: "true"
SystemMessage_Channel: "system-messages"
SystemMessage_Type: "embed"
# There are 2 types of how you can send system messages, 'normal' or 'embed'
SystemMessage_Icon: "USER"
Welcome_Title: "User Joined!"
WelcomeMessage: "Hello %member%, Welcome to %guildname%!"
# %member% define the user who joined and %guildnamne% defines the server name.
Leave_Title: "User Left!"
LeaveMessage: "Goodbye %member%, Thank you for visting %guildname%!"
# %member% define the user who left and %guildnamne% defines the server name.
SystemMessage_EmbedFooter: "false"
# LINKS Configuration
LinksTitle: "Quick Links"
LINKS:
"Website": "https://www.example.com"
"Store": "https://store.example.com"
"Discord": "https://discord.gg/example"
# "Twitter": "https://twitter.com/example"
# Suggestions Configuration
SuggestionChannel: "suggestions"
SuggestionTitle: "Suggestion"
SuggestionStarter: "What would you like to suggest?"
SuggestReact_1: 👍
SuggestReact_2: 👎
# Poll Configuration
PollChannel: "polls"
PollTitle: "Suggestion"
PollStarter: "What would you like to create a poll about?"
PollReact_1: 👍
PollReact_2: 👎
# Announcement Configuration
AnnouncementChannel: "announcements"
AnnouncementTitle: "Servername Announcement"
AnnouncementIcon: "https://i.imgur.com/HbkZyB7.png"
AnnouncementStarter: "What would you like to announce?"
MentionedRole: "@everyone"
# General Command Configuration
HelpCommand: "help"
LinksCommand: "links"
PingCommand: "ping"
SuggestCommand: "suggest"
# Support Command Configuration
NewTicket: "ticket"
CloseTicket: "close"
AddUser: "add"
RemoveUser: "remove"
RenameTicket: "rename"
# Staff Command Configuration
BotSay: "say"
# Admin Command Configuration
AnnounceCommand: "announce"
# Commmand Descriptions
NewTicketDesc: "Create a new support ticket"
AnnounceDesc: "Create a server announcement"
CloseTicketDesc: "Close your support ticket"
LinksDesc: "View some important links"
PingDesc: "Get the bot's latency"
HelpDesc: "Get a list of all the commands"
RemoveUserDesc: "Remove a user from a support ticket"
AddUserDesc: "Add a user to a support ticket"
SuggestionDesc: "Create a server suggestion"
BotSayDesc: "Say something with the bot"
# Error / Warining Messages
IncorrectPerms: ":x: **Err!** You do not have the correct permissions to use this command."
InvalidChannel: ":x: **Err!** Channel not found. Please create it!"
UserNotFound: ":x: **Err!** This user doesn't exist, Are they in this server?"
NoValidTicket: ":warning: You cannot execute this command here. This command is used when closing a ticket."
TicketExists: ":warning: This ticket cannot be opened, It already exists!"
-1
View File
@@ -1 +0,0 @@
node index.js
-1
View File
@@ -1 +0,0 @@
node index.js
+72
View File
@@ -0,0 +1,72 @@
// SupportBot Utils
// Ticket Numbers
const discord = require("discord.js")
const fs = require("fs");
const yaml = require('js-yaml');
const supportbot = yaml.load(fs.readFileSync('./supportbot-config.yml', 'utf8'));
class TicketNumberID {
static pad(guildId) {
let n = this.get(guildId) + '';
let z = '0';
let width = 4;
setTimeout(() => {
this.set(guildId, this.get(guildId) + 1);
}, 50);
return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
}
static get(guildId) {
let ticketnumberID = JSON.parse(fs.readFileSync("./storage/TicketID.json", "utf8"));
if (!ticketnumberID[guildId]) {
ticketnumberID[guildId] = {
id: 0
}
fs.writeFileSync("./storage/TicketID.json", JSON.stringify(ticketnumberID, null, 4), err => {
if (err) console.log(err);
});
return 0;
} else {
return ticketnumberID[guildId].id;
}
}
static set(guildId, value) {
let ticketnumberID = JSON.parse(fs.readFileSync("./storage/TicketID.json", "utf8"));
ticketnumberID[guildId] = {
id: value
}
fs.writeFileSync("./storage/TicketID.json", JSON.stringify(ticketnumberID, null, 4), err => {
if (err) console.log(err);
});
return value;
}
static reset(guildId) {
let ticketnumberID = JSON.parse(fs.readFileSync("./storage/TicketID.json", "utf8"));
ticketnumberID[guildId] = {
id: 0
}
fs.writeFileSync("./storage/TicketID.json", JSON.stringify(ticketnumberID, null, 4), err => {
if (err) console.log(err);
});
return 0;
}
}
module.exports = TicketNumberID;