Compare commits

...

372 commits
v1.src1 ... dev

Author SHA1 Message Date
0ae194f099
Announce the end of the project 2024-01-30 11:39:43 -06:00
0a683479f9
Delete LICENSE 2023-04-30 18:20:40 -05:00
16b17cc0a7
Merge pull request #79 from IDeletedSystem64/add-license-1
is good
2023-04-30 18:18:32 -05:00
5ab1c60f72
Create LICENSE 2023-04-30 18:18:12 -05:00
Sophie Marie
9b52e791a6
Update LICENSE.md 2023-04-30 18:17:33 -05:00
Sophie Marie
631e4987d6
Implement update checker
Co-authored-by: Aisuruneko <aisuru@nekos.tech>
2023-01-25 16:10:45 -06:00
Sophie Marie
38bc50d8a1
Add contribution guidelines. 2023-01-22 20:00:07 -06:00
Sophie Marie
21cd1239e3
Completely rewrite README 2023-01-22 17:48:47 -06:00
Sophie Marie
2c45f65a39
Add update checker function! 2023-01-22 17:32:26 -06:00
Sophie Marie
3713ba9cf2
Downgrade node-fetch to 2.6.6 (or did we not have node-fetch?) 2023-01-22 16:21:43 -06:00
Sophie Marie
6a2ecb14c3
Remove PTB invite link, tweak support paragraph. 2023-01-22 14:31:49 -06:00
Sophie Marie
99ed45f2fe
Remove package-lock from gitignore 2023-01-22 12:43:32 -06:00
Sophie Marie
cefdc65df1
Update dependencies, Add package-lock 2023-01-22 12:43:32 -06:00
Sophie Marie
1db1d5353b
Add issue templates 2023-01-07 14:17:33 -06:00
Sophie Marie
15739f7917
Specify that interactions aren't ephermal by default 2023-01-05 15:02:31 -06:00
Sophie Marie
54993de287
Remove release type and intents 2023-01-05 15:02:04 -06:00
Sophie Marie
052dc251a1
Remove unnecessary comment. 2023-01-05 12:27:17 -06:00
Sophie Marie
18d3ea778d
Credit the artist that created the modified Xenia icon 2023-01-04 21:02:25 -06:00
Sophie Marie
2815e3283b
Rename info to about, Replace Tux with Xenia 2023-01-04 20:51:46 -06:00
Sophie Marie
977f6e2a21
Fix missing async 2023-01-04 20:45:50 -06:00
Sophie Marie
fec4dc45ef
pull 1.4 dev changes into actual dev branch
pull 1.4 dev changes into actual dev branch, closes #73
2023-01-04 20:22:54 -06:00
Sophie Marie
cb621c21ec
Merge pull request #77 from IDeletedSystem64/mergeconflict
Pull dev changes into v14
2022-12-26 16:34:33 -06:00
Sophie Marie
f132421357
Merge branch 'v14' into mergeconflict 2022-12-26 16:34:12 -06:00
Sophie Marie
0681b8cf91
Update shutdown/restart msgs 2022-12-26 16:28:19 -06:00
Sophie Marie
c3e58abfc1
Add link to the avatar for mobile users 2022-12-26 16:22:44 -06:00
Sophie Marie
c484d727f5
no longer removing prefixes in 1.4 2022-12-26 15:58:28 -06:00
Sophie Marie
d74cb0b1ad
Update links 2022-12-26 15:57:29 -06:00
Sophie Marie
ce61a4607e
Bump year 2022-12-26 13:32:59 -06:00
Sophie Marie
d06d121bea
Pull changes from 1.3.1-1.3.2 into dev
fuck me
2022-12-26 13:26:11 -06:00
Sophie Marie
8d9e3937e6
Resolve merge conflicts 2022-12-26 13:17:42 -06:00
Sophie Marie
7b718c43aa
Change constants to use ApplicationCommandOptionType 2022-12-06 21:06:39 -06:00
Sophie Marie
f56dc3ff37
remove isInteractionCommand, it seems to have been removed in v14. 2022-12-06 21:05:49 -06:00
Sophie Marie
dab0aa4799
change intents to use GatewayIntentBits 2022-12-06 20:42:00 -06:00
Sophie Marie
44f71c0e2c
dont mix and match package managers 2022-12-06 19:43:30 -06:00
Sophie Marie
3496f1610e
i hate twitter (and not cause of mr musky ballz) 2022-11-23 22:59:52 -06:00
Sophie Marie
18134aa424 Upgrade dependencies and D.JS to V14 2022-11-19 13:50:27 -06:00
Sophie Marie
c89d8e9dce
Update to 1.3.2
Update to 1.3.2
2022-11-14 22:11:18 -06:00
Sophie Marie
a2dd3e0ca5 Fix GIF profile pictures not being displayed as the GIF 2022-11-14 22:04:06 -06:00
Sophie Marie
a8d34c9990 Specify that the user cannot use that cmd w/ prefix in 1.4 2022-11-14 16:10:10 -06:00
Sophie Marie
3c41e47df1 Make error msgs reply to the interaction 2022-11-14 16:08:31 -06:00
Sophie Marie
67fd0343db Bump version number 2022-11-14 15:36:26 -06:00
Sophie Marie
69ebf0cec4 Remove PTB invite link, link to announcement instead. 2022-11-14 15:30:58 -06:00
Sophie Marie
fb6556463b Update readme 2022-11-14 12:04:01 -06:00
Sophie Marie
7f5428a31b Update help status to use slashcmd 2022-11-13 17:35:52 -06:00
Sophie Marie
3d09aee2df Make messages reply to the interaction instd of sending message 2022-11-10 14:52:49 -06:00
IDeletedSystem64
b817c6b997 Undo changes to reload 2022-11-09 23:27:13 -06:00
Sophie Marie
5af776f4c2 RELOAD FINALLY WORKS WITH SLASHCMDS 2022-11-09 18:57:29 -06:00
Sophie Marie
d9206fe7fa Apparently yarn re-ordered the lock file? 2022-11-08 17:15:09 -06:00
Sophie Marie
24c9e9277a Specify D.js version, as well as dev dependencies. 2022-11-08 17:14:21 -06:00
Sophie Marie
f33bfce68c Remove PTB invite link 2022-11-06 11:20:46 -06:00
Sophie Marie
d650ae3dcc Put bot userID into a code block 2022-10-28 13:11:06 -05:00
Sophie Marie
0fa4c4da21 Upgrade dependencies to their newest versions 2022-10-28 13:09:27 -05:00
Sophie Marie
0f72bed119 Change quote 2022-10-24 16:03:26 -05:00
Sophie Marie
1da0d738ec Prefixes are now kaboom
But uh, that made a huge mess.
2022-10-24 16:03:06 -05:00
Sophie Marie
f3e2fd893d Delete messageCreate event 2022-10-24 16:02:31 -05:00
Sophie Marie
425143b109 Bump version number 2022-10-04 14:35:43 -05:00
Sophie Marie
3a33e4df9c
1.3.1
This is a tiny release to add a warning that we will move entirely to slash commands in 1.4.

Known issues

Slash commands may (rarely) error with "DiscordAPIError: Unknown interaction"
This will be fixed in 1.4
2022-10-03 20:18:43 -05:00
Sophie Marie
367a797851 Add a warning when using prefix commands that they're deprecated and will be removed. 2022-10-03 14:24:39 -05:00
Sophie Marie
6065dcb24d Yarn 2022-10-03 13:56:50 -05:00
Sophie Marie
0caa0ab2da Restructure gitignore 2022-10-03 13:56:36 -05:00
Sophie Marie
77acc594b2
Update to 1.3 Stable
nice pr 



Update to Stable 1,3:

    Eval now has access to Client by default. (This is probably a security mess, oh well. lmao)
    Move token and ownerID to .env (Make sure to update your configuration when updating!)
    Refactor the entire help command, It's actually helpful now!:
    Running help now provides a command list, and running help provides information about the command, as it should've originally.
    Refactor info command, It now looks nicer both inside and out.
    Fixed a bug in userinfo where the username in the embed name returned as the User ID
    Other bug fixes.

For developers:

    Added getTime function, This will allow you to get formatted time.
    Moved Uptime to its own

!!!MAKE SURE TO MOVE YOUR TOKEN AND USERID TO THE NEW .ENV!!!
2022-08-13 14:00:59 -05:00
Sophie Marie
ba8643b537
Update PTB to 1.3ptb_final
Pull latest commits into PTB.
2022-08-11 23:06:39 -05:00
IDeletedSystem64
ca3e1dd37e Mostly finish help refactor. Check desc for more info
The embed design could be hell of a lot more organized, but unfortunately I don't really want to spend the time to set up how I want to do categories for this release, so hopefully 1.4 this will be more organized.
2022-08-11 16:38:30 -05:00
IDeletedSystem64
95a7df98b3 Mention source and self-hosting, Clean up embed code 2022-08-11 16:11:43 -05:00
IDeletedSystem64
3a5f1ce2d2 Remove unneccessary comments 2022-08-10 22:27:57 -05:00
IDeletedSystem64
b7c4cb011e Fix errors when running with arguments | I don't trust this to not break again, xD 2022-08-10 22:27:17 -05:00
IDeletedSystem64
67b126ccff Add .env to Gitignore 2022-08-10 17:18:59 -05:00
Sophie Marie
de90322304
Update PTB to 1.3ptb_8.3.22
Refactor Help Command
Migrate the ownerID and bot token to dotenv
Change ping locations
Update documentation to support the configuration changes
2022-08-03 00:04:37 -05:00
Sophie Marie
55626d314e
Update documentation 2022-08-03 00:00:20 -05:00
IDeletedSystem64
ca47208da7 Refactor help command! 2022-08-02 23:53:44 -05:00
IDeletedSystem64
cb1eb0a5bd Migrate bot-token and ownerid to dotenv 2022-08-02 23:53:28 -05:00
Sophie Marie
0f78055a66
git is stupid 2022-08-02 23:26:39 -05:00
Sophie Marie
428dc5261e
Delete .env 2022-08-02 23:25:22 -05:00
IDeletedSystem64
950f00cbd0 Move configuration files to a seperate directory 2022-08-02 21:50:11 -05:00
IDeletedSystem64
479792d2db Move default .env to a .env.example 2022-08-02 21:49:52 -05:00
IDeletedSystem64
e0685cf7ae Begin support for dotenv 2022-08-02 21:36:56 -05:00
IDeletedSystem64
85f2bb252e Fix broken loading spinner on stop/restart commands 2022-07-28 21:10:39 -05:00
IDeletedSystem64
a0b8b2d5b7 Remove commands.md as it's no longer needed 2022-07-28 20:48:52 -05:00
IDeletedSystem64
b33280a417 Change ping locations, bump version number. 2022-07-28 20:18:06 -05:00
IDeletedSystem64
ca77b63c97 Fuck it. This only fixes the crashes on startup, Does NOT work with slash commands. 2022-07-26 23:27:46 -05:00
Sophie Marie
f7f332d654
Merge pull request #64 from IDeletedSystem64/dev
Public Test Build v1.3
2022-07-26 20:48:41 -05:00
IDeletedSystem64
d527cab9f5 Refactor entire help command, unfinished.
There are still a few thing's that need to be worked on, such as showing a category. This will rely on getting the parent folder of the command since I want to start categorizing everything like I should be to help make things easier to find.
2022-07-26 20:44:00 -05:00
IDeletedSystem64
e1056c4d20 Add new dependencies: node-fetch, dotenv 2022-07-22 21:53:40 -05:00
IDeletedSystem64
09d14f7a7d Update support 2022-07-22 21:51:16 -05:00
IDeletedSystem64
7541b53492 Wait that was suppose to be removed, not a comment. 2022-07-22 21:40:18 -05:00
IDeletedSystem64
2661631c10 Remove unneeded value 2022-07-22 20:47:35 -05:00
Sophie Marie
a50b45e784
Rewrite bot info and embed (#59) 2022-07-18 12:03:50 -05:00
IDeletedSystem64
dca559b365 Fix minutes displaying as hours 2022-07-16 12:10:37 -05:00
IDeletedSystem64
43f73c5403 Pass client to eval 2022-07-14 12:49:54 -05:00
Sophie Mondzelewski
77517f6a16 Make info use the new external function for uptime 2022-07-05 12:29:14 -05:00
Sophie Mondzelewski
e378121fbe Fix tSeconds making SystemUptime be the same as BotUptime 2022-07-05 12:28:31 -05:00
Sophie Mondzelewski
917d6a8c19 Move uptime to a file, This is partially for logging 2022-07-05 11:55:42 -05:00
Sophie Mondzelewski
af6b091cda Fix an oopsie poopsie, a fucky wucky! 2022-07-05 11:51:30 -05:00
IDeletedSystem64
8d154b5e8a Make totalSeconds use process.uptime(); 2022-07-04 11:53:42 -05:00
Sophie Marie
f67548a159
Delete embeds.json 2022-07-04 11:42:50 -05:00
IDeletedSystem64
f5f94a1026 Fix the embed name returning an userID instead of username 2022-07-04 11:08:50 -05:00
Sophie Marie
bd2a028370
Merge pull request #63 from IDeletedSystem64/stable
Apply hotfix to dev
2022-07-03 18:22:26 -05:00
Sophie Marie
c6170b5caf
Update stable to 1.2.1
1.2.1 hotfix
2022-07-03 18:20:37 -05:00
IDeletedSystem64
a740aadbdc Version update 2022-07-03 18:14:53 -05:00
IDeletedSystem64
f54d22beb7 Change how No Permissions error is sent, add logging. 2022-07-03 18:13:35 -05:00
IDeletedSystem64
8f2c8493bd Fix fatal problem where any user can stop the bot 2022-07-03 18:12:53 -05:00
IDeletedSystem64
b7f03b872c Fix a typo in a variable 2022-07-03 17:12:40 -05:00
IDeletedSystem64
b866641fac Add functions, getTime function. This is for logging 2022-07-02 21:08:00 -05:00
Sophie Marie
2ba1c54cf5
Update to Stable 1.2
Update to Stable 1.2
2022-07-01 21:53:15 -05:00
Sophie Marie
da08c6fe8c
Merge pull request #51 from IDeletedSystem64/dev
Anitrox 1.2
2022-07-01 19:52:31 -05:00
Sophie Marie
91bb98b0b9
Update commands.md 2022-07-01 19:50:44 -05:00
IDeletedSystem64
256646d082 Fix embed not sending, causing an empty message error 2022-07-01 19:43:28 -05:00
IDeletedSystem64
a2ec5405a2 Redo responses, Add basic logging. 2022-07-01 19:34:46 -05:00
IDeletedSystem64
4772ab8e0f setnick has been deprecated and removed. 2022-07-01 17:07:24 -05:00
BuildTools
564e644807 Merge branch 'dev' of https://github.com/IDeletedSystem64/anitrox into dev 2022-06-05 18:15:49 -05:00
BuildTools
8cffe5c5a6 Update license to GPLv3 2022-06-05 18:14:29 -05:00
Sophie Mondz
c392f3a759
Add license. 2022-06-05 16:50:48 -05:00
Sophie Mondz
f3c6bb0339
Merge pull request #55 from Foxinatel/dev
Offload event handlers to their own seperate files
2022-06-05 16:33:31 -05:00
Foxinatel
584a073ee0 Offload event handlers to their own seperate files 2022-05-14 09:57:05 +01:00
Sophie Mondz
0f6851adf8
Merge pull request #54 from Foxinatel/dev
null checking
2022-05-01 20:22:55 -05:00
Nathaniel Mason
dd6a5948ef null checking 2022-05-02 02:11:30 +01:00
Sophie Mondz
95a458efc9
Merge pull request #53 from Foxinatel/dev
Upgrade to discord.js v13
2022-04-29 17:47:15 -05:00
Nathaniel Mason
a8409b4828 fix function signatures and spelling errors 2022-04-23 19:07:50 +01:00
Nathaniel Mason
8c431e95c7 remove old todo 2022-04-22 21:28:11 +01:00
Nathaniel Mason
5a7040767e make variadic lists force at least one parameter + grammar corrections 2022-04-22 21:16:14 +01:00
Nathaniel Mason
7d10366f01 fix reload message parsing 2022-04-22 21:07:25 +01:00
Nathaniel Mason
9c28f9f228 fix no argument response to /reload 2022-04-22 21:02:05 +01:00
Nathaniel Mason
f921a67608 better support for sanboxing commands 2022-04-22 21:01:17 +01:00
Nathaniel Mason
984aaecc53 Filter lists down to only used inputs 2022-04-22 06:22:02 +01:00
Nathaniel Mason
37e0603ebf Basic implementation of variadic list inputs 2022-04-22 06:11:53 +01:00
Nathaniel Mason
ab2cd6bd7d Add (almost complete) slash command support 2022-04-22 05:50:42 +01:00
Nathaniel Mason
e3318d26c7 use the new client.application.commands to generate slash command interfaces 2022-04-22 02:53:03 +01:00
Nathaniel Mason
e315feb737 Add ESlint to help enforce coding style 2022-04-22 00:09:21 +01:00
Nathaniel Mason
4b254b8d4e I borked my last merge, oops 2022-04-21 20:33:55 +01:00
Nathaniel Mason
0bc4277389 Fix uinfo command, discord.js v13 seems to have removed user.presence 2022-04-21 20:23:58 +01:00
Nathaniel Mason
8c9c083d26 Fix avatar url handling for error messages 2022-04-21 18:24:12 +01:00
Nathaniel Mason
fb3f26cdd4 Merge upstream changed into Foxi's dev build 2022-04-21 18:09:05 +01:00
Nathaniel Mason
2189417343 Quick and dirty update to discord.js v13 2022-04-21 18:08:53 +01:00
IDeletedSystem64
9182daacb8 Remove opensource.js 2022-04-21 10:53:07 -05:00
IDeletedSystem64
b8bdeb5278 I forgot to remove the displayAvatarURL, lol 2022-04-21 10:52:44 -05:00
IDeletedSystem64
f07fad7951 Credit our awesome contributors! 2022-04-21 10:52:16 -05:00
IDeletedSystem64
9276975a45 Have error generator get user avatar instead of setting it in the command. 2022-04-21 10:05:07 -05:00
IDeletedSystem64
9388496662 Remove displayAvatarURL, This has been moved to the error generator. 2022-04-21 10:04:43 -05:00
IDeletedSystem64
2bd2c95e39 Remove displayAvatarURL, This has been moved to the error generator. 2022-04-21 10:04:03 -05:00
IDeletedSystem64
01515377b4 Fix displayAvatarURL 2022-04-21 09:25:14 -05:00
Sophie Mondz
35605fd9a9
Merge pull request #52 from Foxinatel/dev
Merge Foxinatels changes with base
2022-04-18 12:22:04 -05:00
Nathaniel Mason
05ed4d9c5c fix choose to optionally work with first line 2022-04-18 18:00:56 +01:00
Nathaniel Mason
22821dbd55 More uniform spacing 2022-04-18 17:30:12 +01:00
Nathaniel Mason
74066f666e Modules take names from the name of their file 2022-04-18 17:25:40 +01:00
Nathaniel Mason
0de4408797 add choose command 2022-04-18 17:06:53 +01:00
Nathaniel Mason
fc0235a1ce Update parameter names 2022-04-18 17:06:24 +01:00
Nathaniel Mason
db5c9f4f55 Update indentation 2022-04-18 17:03:01 +01:00
Nathaniel Mason
3fd6a893dd Fix string splitting regex to split on any whitespace 2022-04-18 16:13:06 +01:00
Nathaniel Mason
34115f41cf update README to mention shebang 2022-04-18 16:06:32 +01:00
Sophie Mondz
388535bb3a
Merge pull request #50 from IDeletedSystem64/dev
Fix a small formatting issue and remove deleted emoji
2022-04-14 21:25:40 -05:00
BuildTools
e89b2fae5c Fix a small formatting issue and remove deleted emoji 2022-04-14 21:17:31 -05:00
Sophie Mondz
aaa85f31a9
Update to Anitrox 1.1
Update to Anitrox 1.1
2022-03-29 19:07:05 -05:00
IDeletedSystem64
e0a7891b4a Pass client to eval 2022-03-29 19:04:20 -05:00
IDeletedSystem64
ee7b194d83 Fix missing args causing config issues 2022-03-29 18:53:55 -05:00
Sophie Mondz
d96c8abb6c
PTB1.1
PTB 1.1
2022-03-29 18:21:02 -05:00
IDeletedSystem64
b1d763d425 Fix shit 2022-03-29 18:13:06 -05:00
IDeletedSystem64
31ee6be7f6 Revert "Fix uptimes returning with everything in days"
This reverts commit 88ac2d4ab0.
2022-03-29 18:10:10 -05:00
Sophie Mondz
570edf6da5
Merge pull request #48 from Foxinatel/dev
Patch the config-printing issue + indentation fix
2022-03-29 18:07:17 -05:00
Nathaniel Mason
aaae385763 use config param instead of require 2022-03-29 19:55:44 +01:00
Nathaniel Mason
4312a2e075 change footerTxt to config.footerTxt 2022-03-29 19:51:43 +01:00
Nathaniel Mason
752e6728bb Merge branch 'dev' of github.com:IDeletedSystem64/anitrox into dev 2022-03-29 19:43:19 +01:00
IDeletedSystem64
f5f9cdf0e2 Move answers to config JSON 2022-03-29 11:06:04 -05:00
IDeletedSystem64
9eb8bd3d35 Change how it gets locations from config 2022-03-28 23:55:13 -05:00
IDeletedSystem64
e861e702c0 Change to using config for ID 2022-03-28 13:06:41 -05:00
IDeletedSystem64
3b33f51c65 Change icons and switch to using config for ID 2022-03-28 13:05:34 -05:00
IDeletedSystem64
55be4eb4f8 Stop should now end the process 2022-03-28 12:42:09 -05:00
IDeletedSystem64
268ceb9c4a Move everything to use config 2022-03-28 12:39:27 -05:00
IDeletedSystem64
976ba50c38 Move config to a single variable and pass it. 2022-03-28 10:56:21 -05:00
IDeletedSystem64
88ac2d4ab0 Fix uptimes returning with everything in days 2022-03-27 20:08:50 -05:00
Nathaniel Mason
2206af796a change all indentation to spaces 2022-03-27 23:03:17 +01:00
Sophie Mondz
ada0848db0
Merge pull request #47 from Foxinatel/dev
Merge @Foxinatel's changes
2022-03-27 17:02:54 -05:00
Nathaniel Mason
7bfbe0a021 string formatting with templates 2022-03-26 18:20:32 +00:00
Nathaniel Mason
4d51f2b5a7 new error embed generator + some more patches 2022-03-26 17:31:03 +00:00
Nathaniel Mason
66ef27b8e6 add config-example.json back 2022-03-26 17:30:38 +00:00
Nathaniel Mason
3651553256 change class constructors to json objects 2022-03-26 16:02:17 +00:00
Nathaniel Mason
6c10d32fd5 slightly nicer handling of the embed's footer 2022-03-26 08:58:15 +00:00
Nathaniel Mason
25971ab8cb Foxi's initial patches + formatting updates 2022-03-26 08:33:18 +00:00
IDeletedSystem64
333357e1c9 Allow the user to get info by user ID 2022-03-25 23:48:29 -05:00
Sophie Mondz
c2e677d308
Update README.md 2022-03-21 13:45:53 -05:00
Sophie Mondz
b5b0f160e4
1.0 Stable Release
Merge PTB 1.0 Stable to Stable 1.0
2022-03-21 13:09:32 -05:00
Sophie Mondz
ae64d600af
Delete userinfo.js 2022-03-21 13:08:51 -05:00
Sophie Mondz
422338c851
Delete README.md 2022-03-21 13:08:29 -05:00
Sophie Mondz
cab232f101
Delete config.json 2022-03-21 13:08:20 -05:00
Sophie Mondz
d2a648ceb5
Upgrade to Stable 1.0
Upgrade to Stable Release 1.0
2022-03-21 13:05:13 -05:00
Sophie Mondz
4f53a83b32
Merge pull request #44 from IDeletedSystem64/IDeletedSystem64-patch-1
Update all the commands to use new footer
2022-03-21 13:01:11 -05:00
IDeletedSystem64
e4a64c51bf Update all the commands to use new footer 2022-03-21 12:55:29 -05:00
Sophie Mondz
7520fc74d2
Merge pull request #43 from IDeletedSystem64/IDeletedSystem64-patch-1
Update commands.md
2022-03-21 10:49:34 -05:00
IDeletedSystem64
9dbab772fc Finish command list 2022-03-21 10:48:51 -05:00
IDeletedSystem64
978ccc3231 Change avatar to get from message author if no user is mentioned 2022-03-21 10:37:04 -05:00
Sophie Mondz
17969f62a8
Rename userinfo to uinfo 2022-03-21 10:28:55 -05:00
IDeletedSystem64
26d8a4f60d Rename userinfo to uinfo 2022-03-21 10:27:50 -05:00
Sophie Mondz
71f582403c
Update commands.md 2022-03-19 19:06:20 -05:00
IDeletedSystem64
d47a280bad Now pinging locations. 2022-03-19 10:43:33 -05:00
IDeletedSystem64
1ce2063071 Remove ban: Moderation is far from complete, I'd rather wait until moderation is actually added to readd banning 2022-03-18 21:31:07 -05:00
IDeletedSystem64
8f1583b8da Online status adding may be readded in the future. 2022-03-18 21:29:44 -05:00
IDeletedSystem64
b05a7335f8 buttontest wasn't intended for stable to begin with. 2022-03-18 21:28:59 -05:00
IDeletedSystem64
b2f169e05f Remove server creation (maybe readded in future.) 2022-03-18 21:28:05 -05:00
IDeletedSystem64
bdd45a7e4f Redo help embed 2022-03-18 21:27:09 -05:00
IDeletedSystem64
db045972c1 Add ping locations 2022-03-18 21:26:36 -05:00
Sophie Mondz
809284e8f8
Create commands.md 2022-03-18 21:03:54 -05:00
IDeletedSystem64
8e67021586 Change layout and remove dev 2022-03-18 14:54:14 -05:00
IDeletedSystem64
78b409c3c1 Change error embed footer, additional comments 2022-03-18 11:04:08 -05:00
IDeletedSystem64
21bc961574 On second thought, that ID looks baaad 2022-03-17 23:47:37 -05:00
IDeletedSystem64
f6cbe2ebd6 Rearrange embed 2022-03-17 23:47:04 -05:00
IDeletedSystem64
81a0a53ee0 Change math formula, add new answers 2022-03-17 23:32:20 -05:00
IDeletedSystem64
9940954ae9 Remove statuses 2022-03-17 23:11:49 -05:00
IDeletedSystem64
2be9ee8b69 ALL MY CODE KEEPS BLOWING UP! 2022-03-17 21:55:08 -05:00
IDeletedSystem64
165587b3cb Move statuses and footer 2022-03-17 21:49:52 -05:00
IDeletedSystem64
2c129c0e61 Simplify embed 2022-03-17 21:48:56 -05:00
IDeletedSystem64
057b8f66bd Move statuses and footer to JSON, Simplify errors 2022-03-17 21:47:23 -05:00
IDeletedSystem64
493680d038 Remove unused icons.json and releasenotes 2022-03-17 18:17:07 -05:00
IDeletedSystem64
9ac012b995 Change build 2022-03-17 18:15:39 -05:00
Sophie Mondz
418878981f
A proper readme 2022-02-28 12:58:34 -06:00
Sophie Mondz
801539e4ac
Set the example userid 2022-02-28 12:56:15 -06:00
Sophie Mondz
a7e38a2da1
Update to... I forgot
Update to whatever the hell the new version is
2022-02-03 17:30:21 -06:00
Sophie Mondz
7d976e38e7
Update README.md 2022-02-03 17:28:42 -06:00
Sophie Mondz
ef894d4102
Merge branch 'ptb' into dev 2022-02-03 17:26:59 -06:00
Sophie Mondz
4d5ee92a56
Change thumbnail to use the bots current avatar 2022-02-03 17:17:05 -06:00
IDeletedSystem64
8ba415977d Update package JSON, Version in config 2022-01-14 16:00:43 -06:00
BuildTools
157b948416 Anitrox said to commit these changes 2022-01-12 13:13:23 -06:00
Sophie M
cf28333a94
Update README.md 2022-01-12 11:40:29 -06:00
BuildTools
6dcb2279c1 in theory, config.json will no longer be committed. 2022-01-12 11:34:47 -06:00
IDeletedSystem64
a08582d6d2 Remove "Discord API Ping" frm:info + unneeded stuff. 2022-01-12 00:59:17 -06:00
IDeletedSystem64
e1bef32cde Why did I put "package-log.json" 2022-01-12 00:25:39 -06:00
IDeletedSystem64
2d43f697be Add a .gitignore, finally. 2022-01-12 00:23:40 -06:00
Sophie M
0cab557e10
I pushed to the wrong branch 2021-10-31 20:39:52 -05:00
Sophie M
b1e98f7f19
Update config.json 2021-10-31 20:37:22 -05:00
Sophie M
2e3434f8f4 commit message 2021-09-14 11:01:15 -05:00
Sophie M
f59984c7dc
Update README.md 2021-09-01 19:56:59 -05:00
Sophie M
51a00b82ba
Update startup 2021-08-27 16:15:26 -05:00
Sophie M
25ea95bbd8
buttontest, serversetup 2021-08-27 16:14:52 -05:00
Sophie M
af3b23f843
Update base commit 2021-08-27 16:13:33 -05:00
Sophie M
6a454c22b1
Update to Stable Release Canidiate 3.1
Changed build/version naming system
2021-08-26 19:22:18 -05:00
Sophie M
0757e1f44a
Changed build/version naming system 2021-08-26 19:20:54 -05:00
Sophie M
a64b0658b8
Fix readme for PTB builds
The readme was using the ``dev`` readme instead. I genuinely don't know how this made it past me so long (considering I wrote it)
2021-08-22 21:25:24 -05:00
Sophie M
fac74a75b7
Merge pull request #35 from IDeletedSystem64/dev
Update to SRC2
2021-07-21 16:34:19 -05:00
Sophie M
907fa1d978
Update config.json 2021-07-21 16:33:29 -05:00
Sophie M
29a4629ede
Update releasenotes.txt 2021-07-21 16:09:59 -05:00
Sophie M
0b994f2b65
Thank you GitHub, Very Cool. 2021-07-21 16:07:06 -05:00
Sophie M
df58dad0cb
Release Notes 2021-07-21 16:06:43 -05:00
Sophie M
89788f4650
Release Notes 2021-07-21 16:06:34 -05:00
Sophie M
404eb93ea1
Update footers 2021-07-21 16:03:29 -05:00
Sophie M
98b6958c41
Update build info, drop build num entirely. 2021-07-21 15:49:55 -05:00
Sophie M
43fe767236
Remove CodeQL 2021-07-21 15:48:53 -05:00
Sophie M
737d2b4573
Reduced and replaced custom statuses 2021-07-21 15:48:17 -05:00
Sophie M
a31ce6d3e2
add CodeQL 2021-06-10 13:20:21 -05:00
Sophie M
4b63a6013a
Update dependencies to new versions 2021-06-10 13:19:35 -05:00
Sophie M
343fd1895e
Added some logging for stuff on boot 2021-06-08 21:25:37 -05:00
Sophie M
c07daa81cf
Update config.json 2021-05-07 11:28:36 -05:00
Sophie M
16a08c6d6d
Update opensource attributions
Added Anitrox GitHub as Anitrox is now open source.
2021-05-07 11:27:02 -05:00
Sophie M
2837b1c637
Fix the footer for avatar
I've had this fixed for god knows how long now and am only now getting it uploaded wtf
2021-05-07 11:22:40 -05:00
Sophie M
b6989333da
Add addstatus.js 2021-05-07 10:50:08 -05:00
Sophie M
10198822c0
Add attributions for opensource components (opensource.js) 2021-05-07 10:15:46 -05:00
Sophie M
852d4f0db1
Add support information to anitrox-dev README 2021-05-07 10:14:23 -05:00
Sophie M
50984b9ddc
Update README.md 2021-05-03 14:01:23 -05:00
Anthony M
3272e3360f
Update README.md 2021-03-30 00:16:44 -05:00
Anthony M
2e1e1e58a9
Delete ban.js 2021-03-20 13:17:42 -05:00
Anthony M
f99a3e338d
Open Source legacy builds, add command for links. 2021-03-20 13:17:13 -05:00
Anthony M
4f2e5af93b
Update to SRC1
**Anitrox has been updated.**
**Old Version: PTB 4.1, Build 465**
**New Version: Stable Release Canidate 1, Build 500**
**This Major Anitrox Release Brings New Features and Bug Fixes to Anitrox!**
**What's New?**
- Cheese your friends with np!cheese
- Change your nickname with np!setnick (kinda buggy atm, will be fixed in SRC1.1)
- np!shutdown has been changed to stop and now makes a osu! reference
- Updated invite to have some sweet sweet sexy embeds (wait did I just say sexy embeds whaT)
- Changed info to show the CPU model, this is more of my curiosity of what CPU the host has lol
- New Icons! No more of those old ones from the Nyabot days. now we have proper Anitrox/Borkeon themed emotes! Want more Anitrox/Borkeon emotes like :BorkeonGlee: :Borkeon404: and :BorkeonBSOD:? Join Anitrox Central! run np!help for more information
**Bug Fixes**
- Fixed np!info not replying with bot info and information
**Known Issues**
np!setnick crashes bot when trying to run it on a higher role, this will be fixed in SRC1.1
Some commands might be using the legacy icons, I'm not 100% sure if I got all of them done
**This release was made possible with the support of @OfficialTCGMatt and @akuankka128. Thank you so much!**
2021-03-19 11:27:30 -05:00
Anthony M
d5a1e5835e
Update setnick.js 2021-03-19 11:23:33 -05:00
Anthony M
412f907b0b
Merge pull request #31 from IDeletedSystem64/FixNick
Fix Nick
2021-03-19 11:02:03 -05:00
Anthony M
eecfe9fef8
Removed a curly bracket that caused crash on start 2021-03-19 11:00:30 -05:00
Anthony M
01f2d33da5
Remove Token 2021-03-19 10:08:26 -05:00
TheCodingGuy
4935cf3d43
Fix setnick.js
yeah.. I fixed it? yaay!?
2021-03-19 00:50:30 -04:00
Anthony M
37f45c6d06
Update setnick 2021-03-16 17:50:29 -05:00
Anthony M
64a1655ab9
Update setnick to a (mostly) working version 2021-03-16 17:18:18 -05:00
Anthony M
75fe3064ab
Fixed an issue in cmd handler that broke everything. 2021-03-16 17:09:00 -05:00
Anthony M
b09f4ca31a
Update README.md 2021-03-16 13:24:51 -05:00
Anthony M
aa151890e6
Update setnick,js 2021-03-12 12:28:58 -06:00
Anthony M
2f9cc0563b
Fix setnick permission issue 2021-03-12 10:57:13 -06:00
Anthony M
446a38f31a
Bot release + build is now shown on startup 2021-03-12 10:52:40 -06:00
Anthony M
83b79e1dd5
Anitrox Stable Release Canidiate 1 2021-03-12 10:46:52 -06:00
Anthony M
2f705a3003
Begin work on a properly working setnick 2021-03-04 22:33:44 -06:00
Anthony M
6fd891b636
honestly. i dont know what im doing send help 2021-02-28 00:39:52 -06:00
Anthony M
ca6161933d
final version of stop 2021-02-25 22:10:17 -06:00
Anthony M
6a8559b33f
Create entirely new stop command. 2021-02-25 21:58:39 -06:00
Anthony M
bb7f7be305
Update info to use the new config, add more CPU info. 2021-02-25 10:12:23 -06:00
Anthony M
cf4dacf3c8
Moved version and build to config file, edited start to support it. 2021-02-25 10:11:54 -06:00
Anthony M
d62381d2b4
Update icons to new Anitrox themed icons. 2021-02-25 01:03:33 -06:00
Anthony M
62338fff98
Add avatar command 2021-02-25 00:48:40 -06:00
Anthony M
e30882b055
Move invite to a embed, update cheese embed color 2021-02-24 22:36:30 -06:00
Anthony M
d92dbd91ac
Add cheese command, fix info 2021-02-23 00:18:07 -06:00
Anthony M
78c0211992
Delete statuses.json 2021-02-12 12:22:15 -06:00
Anthony M
18bd7f0d8b
Add new icons to JSON 2021-02-12 12:18:27 -06:00
Anthony M
f922398512
Delete statuses.json 2021-02-12 12:17:29 -06:00
Anthony M
726b4d7c73
start now clears console on successful startup 2021-02-11 21:39:01 -06:00
Anthony M
264f57ac53
Update config.json 2021-02-11 16:07:48 -06:00
Anthony M
892d95c5b7
Update to PTB Release 5.1
Update to PTB Release 5.1
2021-02-09 17:08:40 -06:00
Anthony M
f3714c2c9a
Update hug.js 2021-02-09 17:02:54 -06:00
Anthony M
e2d940e930
Update PTB to Anitrox PTB 5
Anitrox PTB Release 5 (Build 465) adds new fixes and features to Anitrox.
+ Fixed action command GIF issues. They should always show GIFs now. 
+ Anitrox now has a Trello! You can check it out at bit.ly/anitrox-trello
+ Added 8ball, Ask Anitrox ANY question and they will answer! Thanks to @OfficialTCGMatt for helping me finish this.
+ Added snuggle, This may be so I can snuggle my girlfriend with the bot 👀
+ userinfo is now finished!
+ reload has been updated to fix an issue that allowed any user to access the command and reload commands.
~ Added new GIF to hug command. 

Anitrox Fun Fact no.1: Anitrox uses they/them pronouns.
2021-02-06 12:23:12 -06:00
Anthony M
e0e97ba25d
Merge branch 'ptb' into dev 2021-02-06 12:22:35 -06:00
Anthony M
2b14ab9bd1
Delete ptb5.txt 2021-02-06 12:20:00 -06:00
Anthony M
550d60096c
Add files via upload 2021-02-06 12:19:36 -06:00
Anthony M
3fa233100a
Delete userinfo.js 2021-02-06 12:19:21 -06:00
Anthony M
a7494a74ea
Add files via upload 2021-02-06 12:19:07 -06:00
Anthony M
b526407488
Fix one of the statuses 2021-02-06 12:18:33 -06:00
Anthony M
606d6a02c8
Update ptb5.txt 2021-02-06 12:18:00 -06:00
Anthony M
1a8badd5f4
Fix action command GIF issue (I hope) 2021-02-06 12:15:55 -06:00
IDeletedSystem64
7ed0ea9719 Revert "Fix GIF issue on action commands (I hope)"
This reverts commit cfd81dfdd5.
2021-02-06 12:13:59 -06:00
Anthony M
cfd81dfdd5
Fix GIF issue on action commands (I hope) 2021-02-06 12:07:33 -06:00
Anthony M
168b973f2d
Finish userinfo 2021-02-06 12:06:43 -06:00
Anthony M
8e29f2b322
Update ptb5.txt 2021-02-06 11:11:44 -06:00
Anthony M
b71378da72
Fix command reloader being accessible by anyone 2021-02-06 11:10:52 -06:00
Anthony M
9e4e6347dc
Update userinfo 2021-02-06 11:07:36 -06:00
Anthony M
f3ca9678f0
Continue work on userinfo 2021-02-06 01:42:55 -06:00
Anthony M
41c015d890
Update ptb5.txt 2021-02-06 01:24:24 -06:00
Anthony M
971ecd843c
Update ptb5.txt 2021-02-05 22:03:15 -06:00
Anthony M
8938536120
Final 8ball, Thanks to @OfficialTCGMatt for helping with this. 2021-02-05 21:59:24 -06:00
Anthony M
23d34d8fdc
Update 8ball 2021-02-05 01:52:39 -06:00
Anthony M
9080311b4c
Fix "unexpected end of input" on startup (8ball) 2021-02-05 01:33:25 -06:00
Anthony M
ea73dcbeba
Add 8ball test 2021-02-05 01:31:20 -06:00
Anthony M
c7ba61f5ca
Update info 2021-02-04 19:03:16 -06:00
Anthony M
8a3dc09653
Delete todo.txt 2021-02-04 18:59:55 -06:00
Anthony M
866a53ef6c
Update ptb5.txt 2021-02-04 10:24:10 -06:00
Anthony M
cc84797969
Remove 8ball 2021-02-04 10:23:39 -06:00
Anthony M
9fa6ca05e3
Begin work for 8ball 2021-02-04 01:29:09 -06:00
Anthony M
dd22c5e4ca
Create ptb5.txt 2021-02-04 01:26:09 -06:00
Anthony M
6c601d6e49
Finish snuggle, Added GIF to hug 2021-02-04 00:58:46 -06:00
Anthony M
d836479ba0
Add Trello to help 2021-02-03 21:53:42 -06:00
Anthony M
edff0ee0fc
Change odds of leskiss's GIF choices 2021-02-03 00:11:16 -06:00
Anthony M
5d7f995bc2
works on my machine ¯\_(ツ)_/¯ 2021-02-02 23:57:28 -06:00
Anthony M
71d8dd7bbe
Add snuggle, update help 2021-02-02 23:56:33 -06:00
Anthony M
8f85c8f6af
Create README.md 2021-02-02 00:07:52 -06:00
Anthony M
2f6f505f84
Update start.js for I hope the last frickin time 2021-01-31 22:09:21 -06:00
Anthony M
8821e5527b
Delete servers.js 2021-01-31 22:05:49 -06:00
Anthony M
b0ef059a52
Remove unused file (servers.js) 2021-01-31 22:05:20 -06:00
Anthony M
9a224a25b2
Begin work on new statuses 2021-01-31 15:30:04 -06:00
Anthony M
349349876d
PTB Release 4.1 (Build 444)
Update to Public Test Release 4.1
2021-01-30 23:59:15 -06:00
Anthony M
b02fe66a64
Final for lick.js 2021-01-30 23:54:56 -06:00
Anthony M
73f62ff32d
Check for mentioned user, if none return error. 2021-01-30 23:48:07 -06:00
Anthony M
3c7ecffcd4
Add new statuses
This will be uploaded to the bot soon.
2021-01-30 23:34:37 -06:00
Anthony M
f331627bdb
🙃 Ill be honest, I messed up a line. 2021-01-30 23:32:54 -06:00
Anthony M
2aa8fb67a7
lick foxi 2021-01-30 23:26:04 -06:00
Anthony M
d835cdaebb
Check for mentioned user 2021-01-30 23:25:00 -06:00
Anthony M
3accd97980
Add new statuses 2021-01-30 23:23:32 -06:00
Anthony M
5579757497
Hotfix for leskiss
``message.author`` was set as `message.messageAuthor` due to VSCode.
2021-01-26 23:15:07 -06:00
Anthony M
fd9393b790
Update PTB to Test Release 3
PTB Test Release 3 brings fixes and new features to Anitrox.
+ Affection commands now shuffle between different GIF's. May be buggy still
+ Added `leskiss`, Thanks Emi for the suggestion!
~ Rename shutdown to `stop`
2021-01-26 21:58:54 -06:00
Anthony M
84283cef98
Add leskiss, update help 2021-01-26 21:57:13 -06:00
Anthony M
cbdce627d9
Merge branch 'ptb' into dev 2021-01-26 14:10:13 -06:00
Anthony M
c67f359d87
Update to build 439 2021-01-26 14:03:02 -06:00
Anthony M
ed3af3e2fa
Update hug to newest version 2021-01-26 10:03:53 -06:00
Anthony M
ae7c551d62
Add files via upload 2021-01-24 11:56:14 -06:00
Anthony M
fa68989047
Update start.js 2021-01-24 10:59:45 -06:00
Anthony M
b5cb18171e
Add files via upload 2021-01-23 18:08:47 -06:00
Anthony M
b3d9cd32de
Delete shutdown.js 2021-01-23 18:08:27 -06:00
Anthony M
c473664918
Delete restart.js 2021-01-23 17:58:05 -06:00
Anthony M
44f8018586
Update PTB to latest build (430)
PTB Release 2 (build 430) brings new fixes and features to PTB.
+ Updated to work with Discord.JS v12, Some things might be broken still.
+ ``userinfo`` now shows the user icon!
+ ``ping`` command has been finally added.
+ ``info`` now properly shows the bots ping.
+ probably more jazz its 1 am right now..
2021-01-23 01:11:47 -06:00
Anthony M
c0de899207
Update commands to v12 2021-01-23 01:08:05 -06:00
Anthony M
2e0382e18d
Add new statuses, update internal name. 2021-01-22 23:39:58 -06:00
Anthony M
32ffda0e8b
Update PTB
Update PTB to build 429
2021-01-20 21:26:50 -06:00
Anthony M
d95a72e6d3
Merge branch 'ptb' into dev 2021-01-20 21:26:18 -06:00
Anthony M
af4f8ebed2
Add files via upload 2021-01-20 21:24:49 -06:00
Anthony M
eed388c77a
Update to build 429 2021-01-20 21:19:06 -06:00
Anthony M
1af63e8d21
Add userinfo.js 2021-01-20 21:18:20 -06:00
Anthony M
9b22994a68
Add restart.js 2021-01-20 21:11:17 -06:00
Anthony M
d0c16e431b
Delete userinfo.js 2021-01-20 21:05:57 -06:00
Anthony M
d1e69917ea
Remove userinfo.js
This command is causing too many issues and will be readded soon.
2021-01-20 21:05:38 -06:00
Anthony M
ea1cd55c49
Merge pull request #10 from IDeletedSystem64/ptb
Update dev branch to the current PTB build
2021-01-20 20:55:48 -06:00
Anthony M
951417dea3
Update userinfo.js 2021-01-20 20:54:22 -06:00
Anthony M
db278e20ab
Update userinfo.js
PTB Build 423 brings fixes to userinfo:
+ Command now runs correctly
This command is not yet complete and may be buggy.
2021-01-20 11:29:05 -06:00
Anthony M
818b024a14
Update info.js 2021-01-19 21:37:55 -06:00
Anthony M
a254e2ed2f
Merge pull request #8 from IDeletedSystem64/dev
Update PTB with latest stable dev build
2021-01-19 21:37:05 -06:00
Anthony M
58d48fdcf7
Merge pull request #7 from IDeletedSystem64/revert-6-ptb
Revert my screw up 🙃
2021-01-19 21:31:37 -06:00
Anthony M
fb2311f0db
Revert "Update PTB to latest stable dev build" 2021-01-19 21:31:12 -06:00
Anthony M
4fe75c18f7
Merge pull request #6 from IDeletedSystem64/ptb
Update PTB to latest stable dev build
2021-01-19 21:30:50 -06:00
Anthony M
0e70cc9f9d
Add footer variable to start.js for QOL 2021-01-19 21:29:39 -06:00
Anthony M
26f855e3b0
Update help.js and info.js 2021-01-19 21:28:23 -06:00
Anthony M
4c6177aad2
Merge pull request #5 from IDeletedSystem64/dev
Update invite/help
2021-01-19 18:35:17 -06:00
Anthony M
e6b2c14d25
Merge branch 'ptb' into dev 2021-01-19 18:34:36 -06:00
Anthony M
d3166d26d3
Update start.js 2021-01-19 18:09:50 -06:00
Anthony M
0733744e64
Change prefix to prevent conflict
Changed prefix from n! to np! to prevent conflict with the stable builds.
2021-01-19 18:04:07 -06:00
Anthony M
f770fbbee9
Remove token from config.json 2021-01-19 18:02:59 -06:00
50 changed files with 4209 additions and 675 deletions

3
.env.example Normal file
View file

@ -0,0 +1,3 @@
TOKEN="EVERYTHINGS SO FCKED AND IM TIRED OF BEING SCARED"
OWNERID="SO LETS GET OUT AND FCK UP EQUESTRIA"
# Do !!NOT!! share this file once filled out with anybody, Doing so can leak your Bot Token which will give anyone access to your bot!

17
.eslintrc.json Normal file
View file

@ -0,0 +1,17 @@
{
"env": {
"browser": true,
"commonjs": true,
"es2021": true
},
"extends": [
"standard"
],
"parserOptions": {
"ecmaVersion": "latest"
},
"rules": {
"no-eval": "off",
"semi": [1, "always"]
}
}

27
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View file

@ -0,0 +1,27 @@
---
name: Bug report
about: Create a report to help us improve Anitrox for you, for everybody. ❤️
title: ''
labels: bug
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Additional context**
Add any other context about the problem here, Such as version if applicable (ex: you host Anitrox yourself)

View file

@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this Anitrox
title: ''
labels: Suggestion
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

9
.gitignore vendored Normal file
View file

@ -0,0 +1,9 @@
#VSCode configurations.
.vscode
# NPM/Yarn stuff.
node_modules/
# Let's not leak any tokens now... That would be very bad
config.json
.env

9
LICENSE.md Normal file
View file

@ -0,0 +1,9 @@
# Released under MIT License
Copyright (c) 2023 Sophie Marie
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.

View file

@ -1,2 +1,39 @@
# anitrox
Source for ProjectAnitrox, This is mostly for webhooks and file backups.
# the Anitrox project was formally discontinued on January 30th, 2024.
Anitrox was shut down on October 23rd, 2023. Development is now permenantly ceased and support is no longer available.
You will no longer be able to make merge requests, or open bug reports on the bot.
## Building on from here.
You can still fork the bot, and do whatever you'd like with it. We'll be shifting from the GPLv2 license to the MIT license with this change.
## Why now?
I've been becoming increasingly frustrated and unhappy with Discord as a service and platform, and have no desire in putting any more time into something for a platform I quite despise at this point. If you look at the last commits, There hasn't even *been* any active development for on going on months at this point. I've also been shifting my focus on programming towards other things, which has also been contributing to the lack of further development.
# Thank you.
Thank you to everyone who contributed to the bot, weather you contributed with code, a bug report or helped work out an issue, **thank you.**
#
## Get started!
To get started, You'll need Node.JS and NPM
You can get these through either your Linux distributions package manager, or if you are on Windows, by [clicking here.](https://nodejs.org/en/)
## Install those dependencies!
Run ``npm install`` and wait for it to download dependencies\
*For development: ESLint extension in your editor of choice*
## Configure yo bot!
Get or make your Discord bot token from [The Discord developer portal](https://discord.com/developers/applications), and rename ``.env.example`` to ``.env``. Set the ``TOKEN=""`` to the token you got from Discord
Then grab your Discord User ID and put it in ``OWNERID=""``, This tells the bot who owns it
⚠️ **WARNING**: This gives access to the bots controls, such as restart/shutdown, and eval! Make sure you use your own ID and not somebody elses.
## Get this party started!
Run ``npm start`` to start the bot!
<img src="https://i.pinimg.com/originals/ba/e4/de/bae4de2fa4f778f874c84928b8e19203.png" alt="Pinkie Pie blasting a party cannon" height="auto" width="50%">

47
commands/8ball.js Normal file
View file

@ -0,0 +1,47 @@
const { ApplicationCommandOptionType } = require('discord.js');
module.exports = {
name: require('path').parse(__filename).name,
description: 'Ask Anitrox a question, any question! and they will answer it!',
options: [{
name: 'question',
description: 'The question to ask Anitrox',
required: true,
type: ApplicationCommandOptionType.String
}],
async parseMessage (client, config, message, args) {
await message.channel.send(this.handle(client, config, message.author, args.slice(0).join(' ')));
},
async parseInteraction (client, config, interaction) {
await interaction.reply(this.handle(client, config, interaction.user, interaction.options.getString('question')));
},
handle (client, config, user, question) {
const index = Math.floor(Math.random() * config.answers.length);
const answer = config.answers[index];
const avatarURL = user.displayAvatarURL();
if (!question) return client.generateErrorMessage('You need to ask a question!', avatarURL);
return {
embeds: [{
title: ':8ball: 8Ball',
description: `Your amazing question: **${question}**`,
color: 9442302,
footer: {
icon_url: avatarURL,
text: config.footerTxt
},
fields: [
{
name: 'Answer',
value: `${answer}`
}
]
}]
};
}
};

52
commands/about.js Normal file
View file

@ -0,0 +1,52 @@
const Uptime = require('../functions/uptime.js');
const os = require('os');
const osu = require('node-os-utils');
module.exports = {
name: 'about',
description: 'About this bot, as well as the system its running on',
options: [],
async parseMessage (client, config, message) {
await message.channel.send(this.handle(client, config, message.author));
},
async parseInteraction (client, config, interaction) {
await interaction.reply(this.handle(client, config, interaction.user));
},
handle (client, config, user) {
return {
embeds: [{
title: `<:AnitroxInfo:809651936831733791> Information about ${client.user.username}`,
description: `Everything you've ever wanted to know about your favorite bot, ${client.user.username}!`,
color: 9442302,
footer: {
icon_url: user.displayAvatarURL(),
text: config.footerTxt
},
thumbnail: {
url: client.user.displayAvatarURL()
},
fields: [
{ name: '<:anitrox:831193012699791361> Bot Information', value: '** **' },
{ name: 'Bot Name', value: `${client.user.tag}`, inline: true },
{ name: 'Bot ID', value: `${client.user.id}`, inline: true },
{ name: 'Bot Owner', value: isNaN(process.env.OWNERID) ? "Owner didn't set an OwnerID :(" : client.users.cache.get(process.env.OWNERID).username, inline: true },
{ name: 'Release Type', value: config.release, inline: true },
{ name: 'Version', value: config.build, inline: true },
{ name: ':gear: Bot Process Information', value: '** **' },
{ name: '<:memory:997565609179107369> Bot Memory Usage', value: `${(process.memoryUsage().heapUsed / 1024 / 1024).toFixed(2)} MiB`, inline: true },
{ name: ':timer: Bot Uptime', value: Uptime(client.uptime), inline: true },
{ name: ':one: Total Servers', value: `** **${client.guilds.cache.size}`, inline: true },
{ name: '<:hostinfo:997565639352926250> System Information', value: '** **' },
{ name: `${((process.platform === 'linux') ? '<:linux_xenia_trans:1060380032788353144>' : '<:windows:997919047511453696>')} System Platform`, value: process.platform, inline: true },
{ name: `${((process.platform === 'linux') ? ':gear: Kernel Version' : ':gear: System Version')}`, value: os.release(), inline: true },
{ name: ':timer: System Uptime', value: Uptime(os.uptime() * 1000), inline: true },
{ name: '<:cpu:997565592028598282> System CPU Architecture', value: os.arch(), inline: true },
{ name: '<:cpu:997565592028598282> System CPU Model', value: osu.cpu.model(), inline: true },
{ name: '<:nodejs:998609124453531740> Node.js Version', value: process.version, inline: true }
]
}]
};
}
};

42
commands/avatar.js Normal file
View file

@ -0,0 +1,42 @@
const { ApplicationCommandOptionType } = require('discord.js');
module.exports = {
name: require('path').parse(__filename).name,
description: "Gets a user's avatar.",
options: [{
name: 'user',
description: 'Another user',
required: false,
type: ApplicationCommandOptionType.User
},
{
name: 'userid',
description: "Another user's ID",
required: false,
type: ApplicationCommandOptionType.User
}],
async parseMessage (client, config, message, args) {
const target = message.mentions.users.first() || client.users.cache.get(args[0]) || message.author;
await message.channel.send(this.handle(client, config, message.author, target));
},
async parseInteraction (client, config, interaction) {
const target = interaction.options.getUser('user') || client.users.cache.get(interaction.options.getString('userid')) || interaction.user;
await interaction.reply(this.handle(client, config, interaction.user, target));
},
handle (_, config, user, target) {
return {
embeds: [{
title: `:frame_photo: ${target.username}'s Beautiful Profile Picture!`,
description: `[Profile picture link (Mobile users, tap here!)](${target.displayAvatarURL({ dynamic: true })})`,
color: 9442302,
image: { url: target.displayAvatarURL({ dynamic: true }) },
footer: { icon_url: user.displayAvatarURL(), text: config.footerTxt }
}]
};
}
};

View file

@ -1,26 +1,40 @@
const { ApplicationCommandOptionType } = require('discord.js');
module.exports = {
name: "bonk",
description: "Bonks an user!",
execute(client, message, args) {
const messageAuthor = message.author
const taggedUser = message.mentions.users.first();
name: require('path').parse(__filename).name,
description: 'Bonks a user!',
options: [{
name: 'user',
description: 'The user to bonk',
required: true,
type: ApplicationCommandOptionType.User
}],
const embed = {
"title": "<a:SylvBonk:801185845847130113> Bonk",
"description": taggedUser + " You have been bonked by " + messageAuthor + "!",
"color": 3272562,
"footer": {
"icon_url": "https://media.discordapp.net/attachments/549707869138714635/793524910172667964/Screenshot_26.png",
"text": "Made with ❤ in Illinois | Anitrox © IDeletedSystem64 2018-2021"
},
"image": {
"url": "https://cdn.discordapp.com/attachments/793537380330111028/801194481549312060/HappyBONK.gif"
}
}
message.channel.send({ embed: embed });
}
}
async parseMessage (client, config, message) {
await message.channel.send(this.handle(client, config, message.author, message.mentions.users.first()));
},
async parseInteraction (client, config, interaction) {
await interaction.reply(this.handle(client, config, interaction.user, interaction.options.getUser('user')));
},
handle (client, config, user, target) {
if (!target) return client.generateErrorMessage('You need to @mention a user!', user.displayAvatarURL());
return {
embeds: [{
title: '<a:SylvBonk:801185845847130113> Bonk',
description: `${target} You have been bonked by ${user}!`,
color: 9442302,
footer: {
icon_url: user.displayAvatarURL(),
text: config.footerTxt
},
image: {
url: 'https://cdn.discordapp.com/attachments/793537380330111028/801194481549312060/HappyBONK.gif'
}
}]
};
}
};

40
commands/cheese.js Normal file
View file

@ -0,0 +1,40 @@
const { ApplicationCommandOptionType } = require('discord.js');
module.exports = {
name: require('path').parse(__filename).name,
description: 'Cheese a user, or run with no arguments for a surprise :eyes:',
options: [{
name: 'user',
description: 'The user to cheese',
required: false,
type: ApplicationCommandOptionType.User
}],
async parseMessage (client, config, message) {
await message.channel.send(this.handle(client, config, message.author, message.mentions.users.first()));
},
async parseInteraction (client, config, interaction) {
await interaction.reply(this.handle(client, config, interaction.user, interaction.options.getUser('user')));
},
handle (_, config, user, target) {
if (!target) return '*slams cheese on desk*\n**Cheese.** https://www.youtube.com/watch?v=Or4IE8fkpn4';
return {
embeds: [{
title: ':cheese: Cheesed',
description: `${target} You have been cheesed by ${user}!`,
color: 16312092,
footer: {
icon_url: user.displayAvatarURL(),
text: config.footerTxt
},
image: {
url: 'https://cdn.discordapp.com/attachments/803658122299572255/812867714368536636/R06325af354168febcafd96b8328b7590.png'
}
}]
};
}
};

42
commands/choose.js Normal file
View file

@ -0,0 +1,42 @@
const { ApplicationCommandOptionType } = require('discord.js');
module.exports = {
name: require('path').parse(__filename).name,
description: 'Give some lines of input, and get one back at random',
options: [...Array(10).keys()].map(i => ({
name: `option${i + 1}`,
description: 'Another option',
required: i === 0,
type: ApplicationCommandOptionType.String
})),
async parseMessage (client, config, message, args) {
let [head, ...options] = message.content.split(/\s*\n\s*/);
head = head.slice(this.name.length + config.prefix.length);
if (head) options.push(head);
await message.channel.send(this.handle(client, config, message.author, options));
},
async parseInteraction (client, config, interaction) {
console.log([...Array(10).keys()].map(i => interaction.options.getString(`option${i + 1}`)).filter(str => str));
await interaction.reply(this.handle(client, config, interaction.user, [...Array(10).keys()].map(i => interaction.options.getString(`option${i + 1}`)).filter(str => str)));
},
handle (client, config, user, options) {
if (!options.length) return client.generateErrorMessage('You need to provide some input!', user.displayAvatarURL());
const answer = options[Math.floor(Math.random() * options.length)];
return {
embeds: [{
title: 'I have made my decision:',
description: answer,
color: 8311585,
footer: {
icon_url: user.displayAvatarURL(),
text: config.footerTxt
}
}]
};
}
};

49
commands/contributors.js Normal file
View file

@ -0,0 +1,49 @@
module.exports = {
name: require('path').parse(__filename).name,
description: 'Attributions to users who have worked on Anitrox!',
options: [],
async parseMessage (_, config, message) {
await message.channel.send(this.handle(config, message.author));
},
async parseInteraction (_, config, interaction) {
await interaction.reply(this.handle(config, interaction.user));
},
handle (config, user) {
return {
embeds: [{
title: 'Contributors',
description: 'Links to check out our contributors!',
color: 52508,
footer: {
icon_url: user.displayAvatarURL(),
text: config.footerTxt
},
thumbnail: {
url: 'https://cdn.discordapp.com/emojis/809651812323164192.webp?size=128&quality=lossless'
},
fields: [
{
name: 'chuu_shi',
value: 'Thanks to Chuu for letting me use some of his resources to host Anitrox!\n <:GitHub:778165439477841981> [Check out his code!](https://github.com/chuushi)\n <:discord:1057053513210937444> [Check out his Discord community!](https://port.chuu.sh/)'
},
{
name: 'TheCodingGuy',
value: "Matt has helped quite a bit with Anitrox, especially in the early days of Anitrox's development! He even has his own bot!\n <:GitHub:778165439477841981> [Check out his code!](https://github.com/Aisuruneko)\n :robot: [Check out TheCodingBot!](https://github.com/NetroCorp/TheCodingBot)\n :globe_with_meridians: [Check out Netro Corp!](https://netrocorp.net)"
},
{
name: 'Foxinatel',
value: 'Foxi has made massive improvements to Anitrox, such as improving error handling, and much more!\n<:GitHub:778165439477841981> [Check out his code!](https://github.com/foxinatel)'
},
{
name: 'Zaeroses',
value: 'Zaeroses created the Xenia icon Ive used in about when a user hosts Anitrox on Linux based systems. Its been modified to have a transflag-colored glow in the background. \n<:fediverse:1060390228881322004> [Check out their Mastodon! (chitter.xyz)](https://chitter.xyz/@Zaeroses)\n<:GitHub:778165439477841981> [Checkout their code!](https://github.com/Zaeroses)'
}
]
}]
};
}
};

View file

@ -1,24 +1,48 @@
const { ApplicationCommandOptionType } = require('discord.js');
const gifchoices = [
'https://i.pinimg.com/originals/4d/89/d7/4d89d7f963b41a416ec8a55230dab31b.gif',
'https://media1.tenor.com/images/6d73b0a9cadef5310be4b6160d2f959a/tenor.gif?itemid=12099823',
'https://media.tenor.com/images/2636cf3c8152631b4630bf71757a4afa/tenor.gif',
'https://i.imgur.com/JiFpT5E.gif'
];
module.exports = {
name: "cuddle",
description: "Cuddle an user!",
execute(client, message, args) {
const messageAuthor = message.author
const taggedUser = message.mentions.users.first();
const embed = {
"title": ":heart: Cuddle",
"description": taggedUser + " You have been cuddled by " + messageAuthor + "!",
"color": 8311585,
"footer": {
"icon_url": "https://media.discordapp.net/attachments/549707869138714635/793524910172667964/Screenshot_26.png",
"text": "Made with ❤ in Illinois | Anitrox © IDeletedSystem64 2018-2021"
},
"image": {
"url": "https://media.tenor.com/images/7199fdd26fc2c07cd49a34fda3fc37a8/tenor.gif"
}
}
message.channel.send({ embed: embed });
}
}
name: require('path').parse(__filename).name,
description: 'Cuddle a user!',
options: [{
name: 'user',
description: 'The user to cuddle',
required: true,
type: ApplicationCommandOptionType.User
}],
async parseMessage (client, config, message) {
await message.channel.send(this.handle(client, config, message.author, message.mentions.users.first()));
},
async parseInteraction (client, config, interaction) {
await interaction.reply(this.handle(client, config, interaction.user, interaction.options.getUser('user')));
},
handle (client, config, user, target) {
if (!target) return client.generateErrorMessage('You need to @mention a user!', user.displayAvatarURL());
const gif = gifchoices[Math.floor(Math.random() * gifchoices.length)];
return {
embeds: [{
title: ':heart: Cuddle',
description: `${target} You have been cuddled by ${user}!`,
color: 9442302,
footer: {
icon_url: user.displayAvatarURL(),
text: config.footerTxt
},
image: {
url: gif
}
}]
};
}
};

View file

@ -1,23 +1,53 @@
const { ApplicationCommandOptionType } = require('discord.js');
const { inspect } = require('util');
module.exports = {
name: 'eval',
description: 'Runs js code',
execute(client, message, args) {
const commandName = args[0].toLowerCase();
if (message.author.id == 309427567004483586) {
try {
const code = args.join(" ");
let evaled = eval(code);
if (typeof evaled !== "string")
evaled = require("util").inspect(evaled);
message.channel.send(clean(evaled), {code:"xl"});
} catch (err) {
console.log("An error occurred while running that code!")
}
name: require('path').parse(__filename).name,
description: 'handles JS code',
options: [{
name: 'code',
description: 'The string to evaluate',
required: true,
type: ApplicationCommandOptionType.String
}],
async parseMessage (client, config, message, args) {
await message.channel.send(this.handle(client, config, message.author, args.join(' ')));
},
async parseInteraction (client, config, interaction) {
await interaction.reply(this.handle(client, config, interaction.user, interaction.options.getString('code')));
},
handle (client, config, user, code) {
if (user.id === process.env.OWNERID) {
try {
const evaled = inspect(eval(code));
// await message.channel.send(evaled, { code: 'xl' });
return `\`\`\`js\n${evaled}\n\`\`\``;
} catch (error) {
return {
embeds: [{
title: '<:AnitroxError:809651936563429416> **Something went wrong! **',
color: 13632027,
footer: {
icon_url: user.displayAvatarURL(),
text: config.footerTxt
},
fields: [
{
name: '**What Happened?**',
value: 'The command you tried to run failed to handle due to an error.'
},
{
name: 'Error Info',
value: error.message
}
]
}]
};
}
};
}
};
}
}

View file

@ -1,39 +1,64 @@
module.exports = {
name: 'help',
description: '',
execute(client, message, args) {
const { ApplicationCommandOptionType } = require('discord.js');
const embed = {
"title": "<:NyabotInfo:697145463350231040> **Help? HELP!** ",
"color": 9540095,
"description": "<:NyabotWarning:697145463194910791> Not all commands have been implemented. and may be removed without warning",
"footer": {
"text": "Some commands are hidden for dev-only. | Anitrox © IDeletedSystem64 2018-2021"
},
"fields": [
{
"name": "**General Commands**",
"value": "`help` ``info`` ``userinfo`` ``ping`` ``invite`` ``avatar`` ``google`` ``youtube``"
},
{
"name": "Moderation Commands",
"value": "`ban` `kick` `warn` `mute` `unban` `unmute` `purge` `permissions`"
},
{
"name": "Server Management Commands",
"value": "` channelcreate` `channeldelete` `channelrename` `rolecreate` `roleedit` `roledelete` `setnick`"
},
{
"name": "Fun Commands",
"value": "`hug` `poke` `bonk` `slap` `pat` `kiss` `lick` `cuddle` `nom`"
},
{
"name": "**Need additional help or want to report an issue?**",
"value": "https://discord.gg/grebRGsBZ3"
}
]
};
message.channel.send({ embed });
}
};
module.exports = {
name: require('path').parse(__filename).name,
description: 'Get help on anything from commands, to what the bot does! just not your homework..',
options: [{
name: 'help',
description: 'The command you want information on',
required: false,
type: ApplicationCommandOptionType.String
}],
async parseMessage (client, config, message, args) {
await message.channel.send(this.handle(client, config, message.author, args[0]));
},
async parseInteraction (client, config, interaction) {
await interaction.reply(this.handle(client, config, interaction.user, interaction.options.getString('help')));
},
handle (client, config, user, command) {
if (!command) {
return {
embeds: [{
color: 9442302,
title: `:question: SEYMOUR! THE ${client.user.username} IS ON FIRE!`,
description: `Run ${config.prefix}help for more information on each command.`,
footer: {
icon_url: user.displayAvatarURL(),
text: config.footerTxt
},
fields: [
{ name: 'Commands', value: client.commands.map(command => command.name).join(', ') }
]
}]
};
}
const cmdName = command;
const cmd = client.commands.get(cmdName);
console.log(cmd.options.map);
if (!cmd) {
return client.generateErrorMessage(`${cmdName} is not a valid command. Run ${config.prefix}help for a command list!`);
}
return {
embeds: [{
color: 9442302,
title: ':question: Command Help',
description: `Everything you've ever wanted to know about ${cmdName}!`,
footer: {
icon_url: user.displayAvatarURL(),
text: config.footerTxt
},
fields: [
{ name: 'Command Name', value: `${cmdName}`, inline: true },
{ name: 'Command Description', value: cmd.description, inline: true },
{ name: 'Command Options', value: cmd.options.map(option => option.name).join('\n') || 'None', inline: true },
{ name: 'Command Option Description', value: cmd.options.map(option => option.description).join('\n') || 'None', inline: true }
// { name: 'Command Option Required?', value: cmd.options.map(option => option.required) ? 'Yes' : 'No' }
]
}]
};
}
};

View file

@ -1,24 +1,49 @@
const { ApplicationCommandOptionType } = require('discord.js');
const gifchoices = [
'https://cdn.discordapp.com/attachments/803658122299572255/807670647920001044/hug2.gif',
'https://cdn.discordapp.com/attachments/803658122299572255/807670797983285268/hug1.gif',
'https://cdn.discordapp.com/attachments/803658122299572255/807670951113392178/gif6.gif',
'https://cdn.discordapp.com/attachments/803658122299572255/808834617494208532/gif3new.gif',
'https://cdn.discordapp.com/attachments/803658122299572255/807671126376972308/gif4.gif'
];
module.exports = {
name: "hug",
description: "Hugs an user!",
execute(client, message, args) {
const messageAuthor = message.author
const taggedUser = message.mentions.users.first();
const embed = {
"title": "<a:ABlobCatHuggle:801232248035999784> Hug",
"description": taggedUser + " You have been hugged by " + messageAuthor + "!",
"color": 8311585,
"footer": {
"icon_url": "https://media.discordapp.net/attachments/549707869138714635/793524910172667964/Screenshot_26.png",
"text": "Made with ❤ in Illinois | Anitrox © IDeletedSystem64 2018-2021"
},
"image": {
"url": "https://i.imgur.com/r9aU2xv.gif?noredirect"
}
}
message.channel.send({ embed: embed });
}
}
name: require('path').parse(__filename).name,
description: 'Hugs a user!',
options: [{
name: 'user',
description: 'The user to hug',
required: true,
type: ApplicationCommandOptionType.String
}],
async parseMessage (client, config, message) {
await message.channel.send(this.handle(client, config, message.author, message.mentions.users.first()));
},
async parseInteraction (client, config, interaction) {
await interaction.reply(this.handle(client, config, interaction.user, interaction.options.getUser('user')));
},
handle (client, config, user, target) {
if (!target) return client.generateErrorMessage('You need to @mention a user!', user.displayAvatarURL());
const gif = gifchoices[Math.floor(Math.random() * gifchoices.length)];
return {
embeds: [{
title: '<a:ABlobCatHuggle:801232248035999784> Hug',
description: `${target} You have been hugged by ${user}!`,
color: 8311585,
footer: {
icon_url: user.displayAvatarURL(),
text: config.footerTxt
},
image: {
url: gif
}
}]
};
}
};

View file

@ -1,108 +0,0 @@
module.exports = {
name: 'info',
description: 'Shows bot and host information',
execute(client, message, args) {
function Uptime(uptimetype) {
let totalSeconds = (uptimetype / 1000);
let days = parseInt(Math.floor(totalSeconds / 86400)) + " day";
let hours = Math.floor(parseInt(Math.floor(totalSeconds / 3600)) % 24) + " hour";
totalSeconds %= 3600;
let minutes = parseInt(Math.floor(totalSeconds / 60)) + " minute";
let seconds = parseInt(totalSeconds % 60) + " second";
if (parseInt(days.substring(0,2)) != 1) days += "s";
if (parseInt(hours.substring(0,3)) != 1) hours += "s";
if (parseInt(minutes.substring(0,3)) != 1) minutes += "s";
if (parseInt(seconds.substring(0,3)) != 1) seconds += "s";
let uptime = `${days}**, **${hours}**, **${minutes}**, **${seconds}`;
return uptime;
};
const version = ("DEV1.0")
const release = ("anitrox_dev")
const os = require("os")
const embed = {
"title": "<:NyabotInfo:697145463350231040> Information about projectanitrox",
"description": "Everything you've ever wanted to know about projectanitrox!",
"color": 11038194,
"footer": {
"icon_url": "https://cdn.discordapp.com/attachments/549707869138714635/793524910172667964/Screenshot_26.png",
"text": "Made with ❤ in Illinois | Anitrox © IDeletedSystem64 2018-2021 "
},
"thumbnail": {
"url": "https://cdn.discordapp.com/attachments/549707869138714635/793524910172667964/Screenshot_26.png"
},
"fields": [
{
"name": "Bot Information",
"value": "** **"
},
{
"name": "Release Type",
"value": release
},
{
"name": "Release Version",
"value": version
},
{
"name": "Uptime",
"value": Uptime(client.uptime)
},
{
"name": "<:memory:793536677737136178> Bot Memory Usage",
"value": (Math.round(process.memoryUsage().heapUsed / 1024 / 1024 * 100) / 100) + " MiB" + ", Total Free Memory"
},
{
"name": "<:hostinfo:793529505263517747> Host Information",
"value": "** **"
},
{
"name": "<:hostinfo:793529505263517747> Host Uptime",
"value": Uptime(os.uptime() * 1000)
},
{
"name": "<:cpu:793672442056802354> CPU Type",
"value": process.arch
},
{
"name": "<:hostos:793866961675223090> OS Type",
"value": process.platform + " / " + os.version()
},
{
"name": "<:node:793537507018145813> Node.JS Version",
"value": process.version
},
{
"name": "<:Discord:793676263411679232> Discord API Ping",
"value": "tba" + " ms",
"inline": true
},
{
"name": "<:hostinfo:793529505263517747> Bot Ping",
"value": Math.round(client.ws.ping) + " ms",
"inline": true
},
{
"name": "<:NyabotInfo:697145463350231040> **Want more system information?**",
"value": "Run n!sysinfo for more detailed system information"
},
{
"name": "<:usersuccess:793885338250641469> **Special Thanks To**",
"value": "@OfficialTCGMatt for providing help with development"
}
]
};
message.channel.send({ embed });
}
};

View file

@ -1,9 +1,36 @@
module.exports = {
name: 'invite',
description: 'Sends invite to add the bot to a server.',
execute(client, message) {
message.channel.send("PTB: https://discord.com/oauth2/authorize?client_id=489125054261755925&scope=bot&permissions=66186303");
},
};
name: require('path').parse(__filename).name,
description: 'Add Anitrox to your beautiful server!',
options: [],
async parseMessage (client, config, message) {
await message.channel.send(this.handle(client, config, message.author));
},
async parseInteraction (client, config, interaction) {
await interaction.reply(this.handle(client, config, interaction.user));
},
handle (_, config, user) {
return {
embeds: [{
title: 'Add Anitrox to your Server!',
description: 'Weather you want stable, or that squeaky clean fresh PTB build, we gotchu.',
color: 9442302,
footer: {
icon_url: user.displayAvatarURL(),
text: config.footerTxt
},
thumbnail: {
url: 'https://cdn.discordapp.com/attachments/803658122299572255/814352905394061322/anitroxaddsrvr.png'
},
fields: [
{ name: 'Anitrox', value: 'Get the ripe off the vine Anitrox! \n [Add Anitrox to your server](https://discord.com/oauth2/authorize?client_id=576805923964715018&scope=bot&permissions=8)' },
{ name: 'Anitrox Dev, Self hosting and more!', value: 'Self-host your own Anitrox (including dev!), Contribute, and more! The possibilites are endless. [Anitrox Source](https://github.com/IDeletedSystem64/anitrox)' },
{ name: 'Support', value: 'Come join the Anitrox Support Server, for support with Anitrox, help setting up your own self-hosted Anitrox and more!\n [Anitrox Support Server](https://discord.gg/grebRGsBZ3)' }
]
}]
};
}
};

View file

@ -1,24 +1,49 @@
const { ApplicationCommandOptionType } = require('discord.js');
const gifchoices = [
'https://cdn.discordapp.com/attachments/803658122299572255/807671954055626812/kiss5.gif',
'https://cdn.discordapp.com/attachments/803658122299572255/807671956236140554/kiss2.gif',
'https://cdn.discordapp.com/attachments/803658122299572255/807671964599713862/kiss1.gif',
'https://cdn.discordapp.com/attachments/803658122299572255/807671971168387082/kiss4.gif',
'https://cdn.discordapp.com/attachments/803658122299572255/807672017217781840/kiss3.gif'
];
module.exports = {
name: "kiss",
description: "Kisses an user!",
execute(client, message, args) {
const messageAuthor = message.author
const taggedUser = message.mentions.users.first();
const embed = {
"title": ":heart: Kiss",
"description": taggedUser + " You have been kissed by " + messageAuthor + "!",
"color": 8311585,
"footer": {
"icon_url": "https://media.discordapp.net/attachments/549707869138714635/793524910172667964/Screenshot_26.png",
"text": "Made with ❤ in Illinois | Anitrox © IDeletedSystem64 2018-2021"
},
"image": {
"url": "https://i.pinimg.com/originals/e3/4e/31/e34e31123f8f35d5c771a2d6a70bef52.gif"
}
}
message.channel.send({ embed: embed });
}
}
name: require('path').parse(__filename).name,
description: 'Kisses a user!',
options: [{
name: 'user',
description: 'The user to kiss',
required: true,
type: ApplicationCommandOptionType.User
}],
async parseMessage (client, config, message) {
await message.channel.send(this.handle(client, config, message.author, message.mentions.users.first()));
},
async parseInteraction (client, config, interaction) {
await interaction.reply(this.handle(client, config, interaction.user, interaction.options.getUser('user')));
},
handle (client, config, user, target) {
if (!target) return client.generateErrorMessage('You need to @mention a user!', user.displayAvatarURL());
const gif = gifchoices[Math.floor(Math.random() * gifchoices.length)];
return {
embeds: [{
title: ':heart: Kiss',
description: `${target} You have been kissed by ${user}!`,
color: 9442302,
footer: {
icon_url: user.displayAvatarURL(),
text: config.footerTxt
},
image: {
url: gif
}
}]
};
}
};

59
commands/leskiss.js Normal file
View file

@ -0,0 +1,59 @@
const { ApplicationCommandOptionType } = require('discord.js');
const gifchoices = [
'https://cdn.discordapp.com/attachments/793537380330111028/803833954750038066/gif5.gif',
'https://cdn.discordapp.com/attachments/793537380330111028/803833959338475550/gif12.gif',
'https://cdn.discordapp.com/attachments/793537380330111028/803834034135236628/gif9.gif',
'https://cdn.discordapp.com/attachments/793537380330111028/803834082034843658/gif18.gif',
'https://cdn.discordapp.com/attachments/793537380330111028/803834094063583302/gif8.gif',
'https://cdn.discordapp.com/attachments/793537380330111028/803834099869024296/gif10.gif',
'https://cdn.discordapp.com/attachments/793537380330111028/803834132035665950/gif16.gif',
'https://cdn.discordapp.com/attachments/793537380330111028/803834146413084713/gif13.gif',
'https://cdn.discordapp.com/attachments/793537380330111028/803834249425715210/gif22.gif',
'https://cdn.discordapp.com/attachments/793537380330111028/803834323898990592/gif11.gif',
'https://cdn.discordapp.com/attachments/793537380330111028/803834328848793650/gif14.gif',
'https://cdn.discordapp.com/attachments/793537380330111028/803834391226351676/gif17.gif',
'https://cdn.discordapp.com/attachments/793537380330111028/803834391226351676/gif17.gif',
'https://cdn.discordapp.com/attachments/793537380330111028/803834498714304522/gif15.gif',
'https://cdn.discordapp.com/attachments/793537380330111028/803834514269798460/gif19.gif'
];
module.exports = {
name: require('path').parse(__filename).name,
description: 'Lesbian kiss <:lesbian:803831629428686849>',
options: [{
name: 'user',
description: 'The user to kiss',
required: true,
type: ApplicationCommandOptionType.User
}],
async parseMessage (client, config, message) {
await message.channel.send(this.handle(client, config, message.author, message.mentions.users.first()));
},
async parseInteraction (client, config, interaction) {
await interaction.reply(this.handle(client, config, interaction.user, interaction.options.getUser('user')));
},
handle (client, config, user, target) {
if (!target) return client.generateErrorMessage('You need to @mention a user!', user.displayAvatarURL());
const gif = gifchoices[Math.floor(Math.random() * gifchoices.length)];
return {
embeds: [{
title: ':heart: <:lesbian:803831629428686849> Kiss',
description: `${target} You have been kissed by ${user}!`,
color: 8311585,
footer: {
icon_url: user.displayAvatarURL(),
text: config.footerTxt
},
image: {
url: gif
}
}]
};
}
};

47
commands/lick.js Normal file
View file

@ -0,0 +1,47 @@
const { ApplicationCommandOptionType } = require('discord.js');
const gifchoices = [
'https://cdn.discordapp.com/attachments/803658122299572255/805314244123951114/cef569820773b0f5d54ee34cfa18e1f8.gif',
'https://cdn.lowgif.com/full/2027501b8fa5225c-.gif',
'https://i.gifer.com/36Nx.gif',
'https://media.tenor.com/images/e8bbe712a5f36bbe9545930894b08bf9/tenor.gif'
];
module.exports = {
name: require('path').parse(__filename).name,
description: 'Licks a user!',
options: [{
name: 'user',
description: 'The user to lick',
required: true,
type: ApplicationCommandOptionType.User
}],
async parseMessage (client, config, message) {
await message.channel.send(this.handle(client, config, message.author, message.mentions.users.first()));
},
async parseInteraction (client, config, interaction) {
await interaction.reply(this.handle(client, config, interaction.user, interaction.options.getUser('user')));
},
handle (client, config, user, target) {
if (!target) return client.generateErrorMessage('You need to @mention a user!', user.displayAvatarURL());
const gif = gifchoices[Math.floor(Math.random() * gifchoices.length)];
return {
embeds: [{
title: '<a:LeafeonLick:806396195089154058> Lick',
description: `${target} You have been licked by ${user}!`,
color: 8311585,
footer: {
icon_url: user.displayAvatarURL(),
text: config.footerTxt
},
image: {
url: gif
}
}]
};
}
};

View file

@ -1,24 +1,48 @@
const { ApplicationCommandOptionType } = require('discord.js');
const gifchoices = [
'https://i.imgur.com/Ns1RBzX.gif',
'https://cdn.lowgif.com/full/2027501b8fa5225c-.gif',
'https://i.gifer.com/36Nx.gif',
'https://media.tenor.com/images/e8bbe712a5f36bbe9545930894b08bf9/tenor.gif'
];
module.exports = {
name: "nom",
description: "Noms an user!",
execute(client, message, args) {
const messageAuthor = message.author
const taggedUser = message.mentions.users.first();
const embed = {
"title": "<:BlobNomBlob:801241117919805510> Nom",
"description": taggedUser + " You have been nommed by " + messageAuthor + "!",
"color": 8311585,
"footer": {
"icon_url": "https://media.discordapp.net/attachments/549707869138714635/793524910172667964/Screenshot_26.png",
"text": "Made with ❤ in Illinois | Anitrox © IDeletedSystem64 2018-2021"
},
"image": {
"url": "https://data.whicdn.com/images/279560594/original.gif"
}
}
message.channel.send({ embed: embed });
}
}
name: require('path').parse(__filename).name,
description: 'Noms a user!',
options: [{
name: 'user',
description: 'The user to nom',
required: true,
type: ApplicationCommandOptionType.User
}],
async parseMessage (client, config, message) {
await message.channel.send(this.handle(client, config, message.author, message.mentions.users.first()));
},
async parseInteraction (client, config, interaction) {
await interaction.reply(this.handle(client, config, interaction.user, interaction.options.getUser('user')));
},
handle (client, config, user, target) {
if (!target) return client.generateErrorMessage('You need to @mention a user!', user.displayAvatarURL());
const gif = gifchoices[Math.floor(Math.random() * gifchoices.length)];
return {
embeds: [{
title: '<:BlobNomBlob:801241117919805510> Nom',
description: `${target} You have been nommed by ${user}!`,
color: 8311585,
footer: {
icon_url: user.displayAvatarURL(),
text: config.footerTxt
},
image: {
url: gif
}
}]
};
}
};

View file

@ -1,24 +1,46 @@
const { ApplicationCommandOptionType } = require('discord.js');
const gifchoices = [
'https://cdn.discordapp.com/attachments/803658122299572255/803708174293008474/tenor.gif',
'https://community.gamepress.gg/uploads/default/original/3X/0/a/0a762099c5ad6de9ca5f13dd22a7e45884a99eb3.gif',
'https://media1.giphy.com/media/ARSp9T7wwxNcs/giphy.gif'
];
module.exports = {
name: "pat",
description: "Pats an user!",
execute(client, message, args) {
const messageAuthor = message.author
const taggedUser = message.mentions.users.first();
const embed = {
"title": "<:pats:801238281286713355> Pat",
"description": taggedUser + " You have been patted by " + messageAuthor + "!",
"color": 8311585,
"footer": {
"icon_url": "https://media.discordapp.net/attachments/549707869138714635/793524910172667964/Screenshot_26.png",
"text": "Made with ❤ in Illinois | Anitrox © IDeletedSystem64 2018-2021"
},
"image": {
"url": "https://media1.giphy.com/media/ARSp9T7wwxNcs/giphy.gif"
}
}
message.channel.send({ embed: embed });
}
}
name: require('path').parse(__filename).name,
description: 'Pats a user!',
options: [{
name: 'user',
description: 'The user to pat',
required: true,
type: ApplicationCommandOptionType.User
}],
async parseMessage (client, config, message) {
await message.channel.send(this.handle(client, config, message.author, message.mentions.users.first()));
},
async parseInteraction (client, config, interaction) {
await interaction.reply(this.handle(client, config, interaction.user, interaction.options.getUser('user')));
},
handle (client, config, user, target) {
if (!target) return client.generateErrorMessage('You need to @mention a user!', user.displayAvatarURL());
const gif = gifchoices[Math.floor(Math.random() * gifchoices.length)];
return {
embeds: [{
title: '<:pats:801238281286713355> Pat',
description: `${target} You have been patted by ${user}!`,
color: 8311585,
footer: {
icon_url: user.displayAvatarURL(),
text: config.footerTxt
},
image: {
url: gif
}
}]
};
}
};

31
commands/ping.js Normal file
View file

@ -0,0 +1,31 @@
module.exports = {
name: require('path').parse(__filename).name,
description: 'Gets bot ping',
options: [],
async parseMessage (client, config, message, args) {
await message.channel.send(await this.handle(client, config, message.author));
},
async parseInteraction (client, config, interaction) {
await interaction.reply(await this.handle(client, config, interaction.user));
},
async handle (client, config, user) {
const index = Math.floor(Math.random() * config.locations.length);
const location = config.locations[index];
return {
embeds: [{
title: ':ping_pong: Ping',
description: `**Pong!** We pinged **${location}** and got ${client.ws.ping} ms.`,
color: 9442302,
footer: {
icon_url: user.displayAvatarURL(),
text: config.footerTxt
}
}]
};
}
};

View file

@ -1,24 +1,47 @@
const { ApplicationCommandOptionType } = require('discord.js');
const gifchoices = [
'https://i.pinimg.com/originals/b4/95/fb/b495fb19f4b9a1b04f48297b676c497b.gif',
'https://i.imgur.com/H7Ok5tn.gif',
'https://media1.tenor.com/images/8fe23ec8e2c5e44964e5c11983ff6f41/tenor.gif?itemid=5600215'
];
module.exports = {
name: "poke",
description: "Pokes an user!",
execute(client, message, args) {
const messageAuthor = message.author
const taggedUser = message.mentions.users.first();
const embed = {
"title": "👉 Poke!",
"description": taggedUser + " You have been poked by " + messageAuthor + "!",
"color": 8311585,
"footer": {
"icon_url": "https://media.discordapp.net/attachments/549707869138714635/793524910172667964/Screenshot_26.png",
"text": "Made with ❤ in Illinois | Anitrox © IDeletedSystem64 2018-2021"
},
"image": {
"url": "https://i.gifer.com/4IdP.gif"
}
}
message.channel.send({ embed: embed });
}
}
name: require('path').parse(__filename).name,
description: 'Pokes a user!',
options: [{
name: 'user',
description: 'The user to poke',
required: true,
type: ApplicationCommandOptionType.User
}],
async parseMessage (client, config, message) {
await message.channel.send(this.handle(client, config, message.author, message.mentions.users.first()));
},
async parseInteraction (client, config, interaction) {
await interaction.reply(this.handle(client, config, interaction.user, interaction.options.getUser('user')));
},
handle (client, config, user, target) {
if (!target) return client.generateErrorMessage('You need to @mention a user!', user.displayAvatarURL());
const gif = gifchoices[Math.floor(Math.random() * gifchoices.length)];
return {
embeds: [{
title: '👉 Poke!',
description: `${target} You have been poked by ${user}!`,
color: 8311585,
footer: {
icon_url: user.displayAvatarURL(),
text: config.footerTxt
},
image: {
url: gif
}
}]
};
}
};

View file

@ -1,26 +1,54 @@
module.exports = {
name: 'reload',
description: 'Reloads a command',
args: true,
execute(client, message, args) {
const commandName = args[0].toLowerCase();
const command = message.client.commands.get(commandName)
|| message.client.commands.find(cmd => cmd.aliases && cmd.aliases.includes(commandName));
if (!command) {
return message.channel.send(`There is no command with name or alias \`${commandName}\`, ${message.author}!`);
}
delete require.cache[require.resolve(`./${command.name}.js`)];
try {
const newCommand = require(`./${command.name}.js`);
message.client.commands.set(newCommand.name, newCommand);
message.channel.send(`<:NyabotSuccess:697211376740859914> **Reloaded \`${command.name}\` successfully!**`);
console.log('User reloaded ${command.name}.')
} catch (error) {
console.error(error);
message.channel.send(`There was an error while reloading a command \`${command.name}\`:\n\`${error.message}\``);
}
},
};
const { ApplicationCommandOptionType } = require('discord.js');
module.exports = {
name: require('path').parse(__filename).name,
description: 'Reloads a command',
options: [...Array(10).keys()].map(i => ({
name: `option${i + 0}`,
description: 'Another option',
required: i === 0,
type: ApplicationCommandOptionType.User
})),
async parseMessage (client, config, message, args) {
await message.channel.send(this.handle(client, config, message.author, args));
},
async parseInteraction (client, config, interaction) {
await interaction.reply(this.handle(client, config, interaction.user, [...Array(10).keys()].map(i => interaction.options.getString(`option${i + 1}`)).filter(str => str)));
},
handle (client, config, user, args) {
if (user.id === process.env.OWNERID) {
if (!args.length) return client.generateErrorMessage('You forgot to provide anything to reload, you pillock', user.displayAvatarURL());
let returnMessage = '';
args.forEach(async (arg) => {
const commandName = arg?.toLowerCase();
const command = client.commands.get(commandName);
if (!command) {
returnMessage += `There is no command with name or alias \`${commandName}\`\n`;
} else {
delete require.cache[require.resolve(`./${command.name}.js`)];
try {
const newCommand = require(`./${command.name}.js`);
client.commands.set(newCommand.name, newCommand);
returnMessage += `Successfully reloaded \`${commandName}\`\n`;
console.log(`User reloaded ${command.name}.`);
} catch (error) {
console.error(error);
returnMessage += `There was an error while reloading \`${command.name}\`\n`;
}
}
});
return returnMessage;
} else {
console.error(`[SYSTEM] [ERR] User ${user.username} tried to reload ${args[0]}, but doesn't have permission!`);
return client.generateErrorMessage("You don't have permission to run this command.", user.displayAvatarURL());
}
}
};

49
commands/restart.js Normal file
View file

@ -0,0 +1,49 @@
module.exports = {
name: require('path').parse(__filename).name,
description: 'Restarts the bot',
options: [],
async parseMessage (client, config, message) {
await this.handle(client, config, message.author, message.channel);
},
async parseInteraction (client, config, interaction) {
await this.handle(client, config, interaction.user, interaction.channel);
},
async handle (client, config, user, channel) {
if (user.id === process.env.OWNERID) {
const embeds = [{
title: '<a:AnitroxWorking:997565411212144730> Restart Bot',
description: '<a:AnitroxWorking:997565411212144730> Restarting now, Be back in a minute!',
color: 9442302,
footer: {
icon_url: user.displayAvatarURL(),
text: config.footerTxt
}
}];
console.log('[SYSTEM] [INFO] Restarting now!');
const response = await channel.send({ embeds });
try {
client.destroy();
await client.login(process.env.TOKEN);
console.log('[SYSTEM] [INFO] Restarted successfully!');
await response.edit({
embeds: [{
title: ':white_check_mark: Restart Bot',
description: 'Restarted!',
color: 9442302,
footer: {
icon_url: user.displayAvatarURL(),
text: config.footerTxt
}
}]
});
} catch (e) { console.error(e); }
} else {
console.error('[SYSTEM] [ERR] User ' + user.username + " tried to restart the bot, but doesn't have permission! If this was you, Check your config.json");
await channel.send(client.generateErrorMessage('You do not have permission to run this command.', user.displayAvatarURL()));
}
}
};

View file

@ -1,13 +0,0 @@
module.exports = {
name: 'shutdown',
description: '(Owner Only) Shuts down the bot.',
execute(client, message, args) {
if (message.author.id == 309427567004483586) {
message.channel.send("<a:NyabotWorking:697147309531594843> Shutting Down...").then
client.destroy()
.catch(console.error)
} else {
message.channel.send("<:NyabotDenied:697145462565896194> Access Denied, You must be bot owner to execute this command.");
}
}}

View file

@ -1,24 +1,39 @@
const { ApplicationCommandOptionType } = require('discord.js');
module.exports = {
name: "slap",
description: "Slaps an user!",
execute(client, message, args) {
const messageAuthor = message.author
const taggedUser = message.mentions.users.first();
const embed = {
"title": ":anger: Slap",
"description": taggedUser + " You have been slapped by " + messageAuthor + "!",
"color": 8311585,
"footer": {
"icon_url": "https://media.discordapp.net/attachments/549707869138714635/793524910172667964/Screenshot_26.png",
"text": "Made with ❤ in Illinois | Anitrox © IDeletedSystem64 2018-2021"
},
"image": {
"url": "https://media1.tenor.com/images/b6d8a83eb652a30b95e87cf96a21e007/tenor.gif?itemid=10426943"
}
}
message.channel.send({ embed: embed });
}
}
name: require('path').parse(__filename).name,
description: 'Slaps a user!',
options: [{
name: 'user',
description: 'The user to slap',
required: true,
type: ApplicationCommandOptionType.User
}],
async parseMessage (client, config, message) {
await message.channel.send(this.handle(client, config, message.author, message.mentions.users.first()));
},
async parseInteraction (client, config, interaction) {
await interaction.reply(this.handle(client, config, interaction.user, interaction.options.getUser('user')));
},
handle (client, config, user, target) {
if (!target) return client.generateErrorMessage('You need to @mention a user!', user.displayAvatarURL());
return {
embeds: [{
title: ':anger: Slap',
description: `${target} You have been slapped by ${user}!`,
color: 9442302,
footer: {
icon_url: user.displayAvatarURL(),
text: config.footerTxt
},
image: {
url: 'https://media1.tenor.com/images/b6d8a83eb652a30b95e87cf96a21e007/tenor.gif?itemid=10426943'
}
}]
};
}
};

47
commands/snuggle.js Normal file
View file

@ -0,0 +1,47 @@
const { ApplicationCommandOptionType } = require('discord.js');
const gifchoices = [
'https://media.discordapp.net/attachments/803658122299572255/806775382995894282/anime-couple-snuggle-gif-5.gif?width=450&height=238',
'https://media.discordapp.net/attachments/803658122299572255/806775411928989726/snuggl1.gif',
'https://cdn.discordapp.com/attachments/803658122299572255/806775422833786911/ImpureDeepAmbushbug-small.gif'
];
module.exports = {
name: require('path').parse(__filename).name,
description: 'Snuggle a user!',
options: [{
name: 'user',
description: 'The user to snuggle',
required: true,
type: ApplicationCommandOptionType.User
}],
async parseMessage (client, config, message) {
await message.channel.send(this.handle(client, config, message.author, message.mentions.users.first()));
},
async parseInteraction (client, config, interaction) {
await interaction.reply(this.handle(client, config, interaction.user, interaction.options.getUser('user')));
},
handle (client, config, user, target) {
if (!target) return client.generateErrorMessage('You need to @mention a user!', user.displayAvatarURL());
const gif = gifchoices[Math.floor(Math.random() * gifchoices.length)];
return {
embeds: [{
title: '<:BlobSnuggleCat:806759753450782731> Snuggle',
description: `${target} You have been snuggled by ${user}!`,
color: 9442302,
footer: {
icon_url: user.displayAvatarURL(),
text: config.footerTxt
},
image: {
url: gif
}
}]
};
}
};

35
commands/stop.js Normal file
View file

@ -0,0 +1,35 @@
module.exports = {
name: require('path').parse(__filename).name,
description: "IT'S TIME TO STOP!... the bot",
options: [],
async parseMessage (client, config, message) {
await this.handle(client, config, message.author, message.channel);
},
async parseInteraction (client, config, interaction) {
await this.handle(client, config, interaction.user, interaction.channel);
},
async handle (client, config, user, channel) {
if (user.id === process.env.OWNERID) {
console.log('[SYSTEM] [INFO] ' + `The bot is going down for shut down. \nShutdown requested by ${user.username}`);
await channel.send({
embeds: [{
title: 'Shut down the bot',
description: '<a:AnitroxWorking:997565411212144730> Shutting down now, Until next time!',
color: 9442302,
footer: {
icon_url: user.displayAvatarURL(),
text: config.footerTxt
}
}]
});
process.exit();
} else {
console.error('[SYSTEM] [ERR] User ' + user.username + " tried to shut down the bot, but doesn't have permission! If this was you, Check your config.json");
await channel.send(client.generateErrorMessage('You do not have permission to run this command.', user.displayAvatarURL()));
}
}
};

View file

@ -1 +0,0 @@
This is really just to make a directory lol.

73
commands/uinfo.js Normal file
View file

@ -0,0 +1,73 @@
const { ApplicationCommandOptionType } = require('discord.js');
module.exports = {
name: require('path').parse(__filename).name,
description: 'Gets info about an user, such as ID, Discord Join date and more',
options: [{
name: 'user',
description: 'Another user',
required: false,
type: ApplicationCommandOptionType.User
}],
async parseMessage (client, config, message) {
const target = message.mentions.members.first() || message.member;
await message.channel.send(this.handle(client, config, message.author, target));
},
async parseInteraction (client, config, interaction) {
const target = interaction.options.getUser('user') ? (await interaction.guild.members.fetch(interaction.options.getUser('user'))) : interaction.member;
await interaction.reply(this.handle(client, config, interaction.user, target));
},
handle (client, config, user, target) {
return {
embeds: [{
title: `Everything you've ever wanted to know about ${target.user.username}!`,
color: 9442302,
footer: {
icon_url: user.displayAvatarURL(),
text: config.footerTxt
},
thumbnail: {
url: target.displayAvatarURL()
},
fields: [
{
name: 'Username',
value: target.user.username,
inline: true
},
{
name: 'Discriminator',
value: target.user.discriminator,
inline: true
},
{
name: 'Full Username',
value: target.user.tag,
inline: true
},
{
name: 'User Profile Picture',
value: target.user.displayAvatarURL()
},
{
name: 'User Status',
value: target.presence?.status ?? (config.intents.includes('GUILD_PRESENCES') ? 'Offline' : 'Missing GUILD_PRESENCES intent')
},
{
name: 'User ID',
value: `\`${target.user.id}\``
},
{
name: 'User Joined Discord',
value: target.user.createdAt.toString(),
inline: true
}
]
}]
};
}
};

View file

@ -1,64 +0,0 @@
module.exports = {
name: "userinfo",
description: "Gets info about an user, such as ID, Discord Join date and more.",
execute(client, message, args) {
const user = message.mentions.users.first();
const activity = user.presence.activities[i];
for (var i=0;i<user.presence.activities.length;i) {
if (activity.type == "CUSTOM_STATUS")
activity.name + activity.state
else
activity.type + activity.name
};
const embed = {
"title": "Everything you've ever wanted to know about " + user.username + "!",
"color": 172544,
"footer": {
"icon_url": "https://media.discordapp.net/attachments/549707869138714635/793524910172667964/Screenshot_26.png",
"text": "Made with ❤ in Illinois | Anitrox © 2018-2021 IDeletedSystem64"
},
"thumbnail": {
"url": user.displayAvatarURL()
},
"fields": [
{
"name": "Attention",
"value": "This command isn't yet finished, More info will be added soon!"
},
{
"name": "Full Username",
"value": user.tag
},
{
"name": "User Presence",
value: user.presence.status
},
{
"name": "User Status",
value: activity.state + " " + playing.name
},
{
"name": "User ID",
"value": "``" + user.id + "``"
},
{
"name": "User Joined Discord",
"value": user.createdAt,
inline: true
},
]
};
message.channel.send({ embed: embed });
}
}

73
config-example.json Normal file
View file

@ -0,0 +1,73 @@
{
"prefix": "n!",
"build": "1.4",
"footerTxt": "Anitrox, made with <3 by IDeletedSystem64 | 2018-2023",
"imageApi": "",
"updater": {
"enabled": true,
"frequency": "360",
"gitRepo": "IDeletedSystem64/anitrox"
},
"sandbox": {
"enabled": false,
"id": "0",
"refreshLocal": false,
"refreshGlobal": false
},
"statuses": [
"with /help",
"with Sophie!",
"Trans Rights!",
"in your computer",
"with my internet router",
"ssh: system64@borkeonv2",
"YouTube",
"with source code",
"Visual Studio Code",
"Minecraft",
"with the network connections.",
"VLC Media Player",
"Chromium"
],
"locations": [
"Microsoft",
"LinusTechTips",
"Linus Torvalds",
"borkeonv2",
"Google",
"192.168.1.1",
"127.0.0.1",
"Sophie's computer",
"Mars",
"Netro Corporation",
"System64 Technologies",
"myself",
"Twilight Sparkle",
"the Pokemon Center",
"Who asked?",
"you",
"your mother"
],
"answers": [
"Heck no!",
"Are you crazy!? No!",
"Don't even think about it.",
"No! You might bork something!",
"Heck yeah",
"I don't think so.",
"Let me think about it first. No.",
"Let me think about it first. Yeah",
"Let me think about it first. Maybe",
"I don't know man",
"Maybe",
"I'm not sure",
"Ask again",
"YEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE!!!",
"Definitely!",
"Go for it! :smile:",
"Good idea!",
"Sure"
]
}

View file

@ -1,4 +0,0 @@
{
"prefix": "n!",
"ownerID": "309427567004483586"
}

View file

@ -1 +0,0 @@

5
events/error.js Normal file
View file

@ -0,0 +1,5 @@
module.exports = {
event: require('path').parse(__filename).name,
once: false,
listener: () => e => { console.log(`[ERROR] ${e}`); }
};

View file

@ -0,0 +1,24 @@
module.exports = {
event: require('path').parse(__filename).name,
once: false,
listener: (client, config) =>
async (interaction) => {
try {
await client.commands.get(interaction.commandName)?.parseInteraction(client, config, interaction);
} catch (error) {
console.error(error);
interaction.reply({
embeds: [{
title: '<:AnitroxError:809651936563429416> **Something went wrong!**',
description: error.stack,
color: 13632027,
footer: {
icon_url: interaction.user.displayAvatarURL(),
text: config.footerTxt
}
}],
ephemeral: false
});
}
}
};

30
events/messageCreate.js Normal file
View file

@ -0,0 +1,30 @@
module.exports = {
event: require('path').parse(__filename).name,
once: false,
listener: (client, config) =>
async (message) => {
if (!message.content.startsWith(config.prefix) || message.author.bot) return;
const args = message.content.slice(config.prefix.length).split(/\s+/);
const command = args.shift()?.toLowerCase() ?? '';
if (!client.commands.has(command)) return;
try {
await client.commands.get(command)?.parseMessage(client, config, message, args);
} catch (error) {
console.error(error);
message.channel.send({
embeds: [{
title: '<:AnitroxError:809651936563429416> **Something went wrong!**',
description: error.stack,
color: 13632027,
footer: {
icon_url: message.author.displayAvatarURL(),
text: config.footerTxt
}
}]
});
}
}
};

63
events/ready.js Normal file
View file

@ -0,0 +1,63 @@
const { Collection } = require('discord.js');
module.exports = {
event: require('path').parse(__filename).name,
once: true,
listener: (client, config) =>
async () => {
const sandboxSettings = config.sandbox;
const localCommands = client.guilds.cache.get(sandboxSettings.id)?.commands;
const globalCommands = client.application?.commands;
let existingLocal = await localCommands?.fetch();
let existingGlobal = await globalCommands?.fetch();
if (sandboxSettings.enabled) {
if (sandboxSettings.refreshLocal && localCommands) {
console.log('deleting previous local commands');
existingLocal?.forEach(async (x) => {
await localCommands?.delete(x);
});
existingLocal = new Collection();
}
if (sandboxSettings.refreshGlobal) {
console.log('deleting previous global commands');
existingGlobal?.forEach(async x => {
await client.application?.commands.delete(x);
});
existingGlobal = new Collection();
}
}
client.commands.forEach(async (command) => {
if (sandboxSettings.enabled && !existingLocal?.map(x => x.name).includes(command.name)) {
await localCommands?.create(command);
// console.log(`created new local command ${command.name}`);
}
if (!existingGlobal?.map(x => x.name).includes(command.name)) {
await globalCommands?.create(command);
// console.log(`created new global command ${command.name}`);
}
});
console.clear();
console.log(' ___ _ __ ');
console.log(' / | ____ (_) /__________ _ __');
console.log(' / /| | / __ \\/ / __/ ___/ __ \\| |/_/');
console.log(' / ___ |/ / / / / /_/ / / /_/ /> w < ');
console.log(`/_/ |_/_/ /_/_/\\__/_/ \\____/_/|_| ${config.build}`);
console.log('Ready!| Anitrox by IDeletedSystem64 | Also check out Novetus!');
if (config.updater.enabled === true) {
await client.updater.checkUpdates(true); // This is probably the wrong way to do it
setInterval(async () => {
await client.updater.checkUpdates(true);
}, parseInt(config.updater.frequency * 60000)); // This is set to 6 hours (360 minutes) by default.
}
// Statuses
setInterval(async () => {
const index = Math.floor(Math.random() * config.statuses.length); // Picks a status from the config file
await client.user?.setActivity(config.statuses[index]);
}, 20000);
}
};

5
events/warn.js Normal file
View file

@ -0,0 +1,5 @@
module.exports = {
event: require('path').parse(__filename).name,
once: false,
listener: () => e => (`[WARN] ${e}`)
};

7
functions/getTime.js Normal file
View file

@ -0,0 +1,7 @@
module.exports = () => {
const date = new Date();
const timeDate = date.toLocaleDateString();
const time = date.toLocaleTimeString();
return ` ${time} | ${timeDate} `;
};

50
functions/updateCheck.js Normal file
View file

@ -0,0 +1,50 @@
/* eslint-disable brace-style */ // Tell eslint to stfu :)
const fetch = require('node-fetch');
const config = require('../config.json');
class updateChecker {
constructor () {
this.status = null;
this.failReason = null;
}
checkUpdates = (notify) => {
const repo = `https://api.github.com/repos/${config.updater.gitRepo}/releases/latest`;
const getUpdates = () => {
return fetch(repo)
.then(async (response) => {
if (response.status !== 200) {
this.status = 2; // Error
this.failReason = response.statusText;
} else {
response = await response.json();
if (!response) { this.status = 2; } // Something went wrong while checking for updates :(
const version = {
latest: response.name,
current: config.build
};
if (version.current === version.latest) { this.status = 0; return version; } // Up-to-date!
else if (version.current < version.latest) { this.status = 1; return version; } // Not up to date.
else this.status = 2; // Something went wrong while checking for updates :(
return response;
};
})
.catch(err => { console.error(err); });
};
return getUpdates().then(response => {
if (notify === true) {
if (this.status === 1) console.log(`\n✨ It must be your lucky day! Anitrox ${response.latest} is now available! Download it from github.com/${config.updater.gitRepo}/releases!`); // Log to console about the new release!
else if (this.status === 2) console.error(`\nSomething went wrong while checking for updates... :( | ${this.failReason}`); // This can probably be done more properly, But quite honestly I'm tired of working at this. ^system64
else if (this.status === 0) {} // Up-to-date
else console.error(`Unknown Update Status!! ${this.status}`);
} else return this.status;
});
};
getStatus = () => { return this.status; };
}
module.exports = function () { return new updateChecker(); };

15
functions/uptime.js Normal file
View file

@ -0,0 +1,15 @@
module.exports = (uptime) => {
const tSeconds = (uptime / 1000);
const tDays = parseInt(tSeconds / 86400);
const tHrs = parseInt((tSeconds % 86400) / 3600);
const tMins = parseInt((tSeconds % 3600) / 60);
const tSecs = parseInt(tSeconds % 60);
const days = tDays + (tDays === 1 ? ' day' : ' days');
const hours = tHrs + (tHrs === 1 ? ' hour' : ' hours');
const minutes = tMins + (tMins === 1 ? ' minute' : ' minutes');
const seconds = tSecs + (tSecs === 1 ? ' second' : ' seconds');
return `${days}, ${hours}, ${minutes}, ${seconds}`;
};

2719
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,15 +1,22 @@
{
"name": "nyabotcanary",
"name": "projectanitrox",
"version": "1.0.0",
"description": "Discord Bot Based on Discord.JS",
"main": "main.js",
"main": "start.js",
"dependencies": {
"discord.js": "^11.5.1",
"node-os-utils": "^1.3.2"
"discord.js": "^14.7.1",
"dotenv": "^16.0.3",
"node-fetch": "^2.6.6",
"node-os-utils": "^1.3.7",
"require-all": "^3.0.0"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Anthony Mondz",
"license": "ISC"
"author": "IDeletedSystem64",
"license": "GPLv3",
"devDependencies": {
"eslint": "^8.32.0",
"eslint-config-standard": "^17.0.0",
"eslint-plugin-import": "^2.27.5",
"eslint-plugin-n": "^15.6.1",
"eslint-plugin-promise": "^6.1.1"
}
}

120
start.js Normal file → Executable file
View file

@ -1,77 +1,55 @@
console.log('Preparing to start!')
#!/usr/bin/env -S node
const fs = require('fs');
const Discord = require('discord.js');
const { prefix, token } = require('./config.json');
const os = require("os")
const version = "Test Release 21";
const release = "anitrox_unstable"
console.log('Starting!')
const client = new Discord.Client();
client.commands = new Discord.Collection();
const activities_list = [
"with n!help",
"Where am I?",
"with Sylveons!",
"on my host's hard disk",
"with Happy",
"HAAAAAAAAPPPPPPPYYYYYYYYYYYYYYYYYYYY",
"Running on " + process.platform + " / " + os.version() + "!",
"with the tea machine",
"with Borked Computers",
"on Happy's main PC- wait shoot she's coming",
"btw I use Debian linux"
];
const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));
for (const file of commandFiles) {
const command = require(`./commands/${file}`);
client.commands.set(command.name, command);
}
client.on("error", (e) => console.error(e));
client.on("warn", (e) => console.warn(e));
client.on("debug", (e) => console.info(e))
client.once('ready', () => {
console.log('All systems go.');
const { Client, Collection, GatewayIntentBits } = require('discord.js');
const config = require('./config.json');
require('dotenv').config();
console.log('Starting!');
// const client = new Discord.Client({ intents: config.intents.map(intent => eval(`Discord.Intents.FLAGS.${intent}`)) });
const client = new Client({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.GuildPresences
]
});
setInterval(() => {
const index = Math.floor(Math.random() * (activities_list.length - 1) + 1);
client.user.setActivity(activities_list[index]);
}, 20000);
// todo: move back to file
client.commands = new Collection();
fs.readdirSync('./commands')
.filter(file => file.endsWith('.js'))
.forEach(file => {
const command = require(`./commands/${file}`);
client.commands.set(command.name, command);
});
// Create a collection using those command files
client.on('message', message => {
if (!message.content.startsWith(prefix) || message.author.bot) return;
fs.readdirSync('./events')
.filter(file => file.endsWith('.js'))
.map(file => require(`./events/${file}`))
.forEach(({ once, event, listener }) => {
client[once ? 'once' : 'on'](event, listener(client, config));
});
// Create listeners from the event files.
const args = message.content.slice(prefix.length).split(/ +/);
const command = args.shift().toLowerCase();
if (!client.commands.has(command)) return;
try {
client.commands.get(command).execute(client, message, args);
} catch (error) {
const embed = {
"title": "<:NyabotError:697145462347661412> **An error occurred!**",
"color": 13632027,
"footer": {
"icon_url": "https://cdn.discordapp.com/attachments/549707869138714635/793524910172667964/Screenshot_26.png",
"text": "Anitrox © IDeletedSystem64 2018-2021 All Rights Reserved."
},
"fields": [
{
"name": "**What Happened?**",
"value": "The command you tried to run failed to execute"
},
{
"name": "Error Info",
"value": error.message
}
]
};
message.channel.send({ embed });
}
client.generateErrorMessage = (errorMsg, avatarURL) => ({
embeds: [{
title: '<:AnitroxError:809651936563429416> Error',
color: 13632027,
footer: {
icon_url: avatarURL,
text: config.footerTxt
},
fields: [
{
name: 'Something went wrong!',
value: errorMsg
}
]
}]
});
// Error message generator.
client.login(token);
client.updater = require('./functions/updateCheck.js')(); // da update checker (real)
client.login(process.env.TOKEN);
// Login to Discord!