Compare commits
152 commits
Author | SHA1 | Date | |
---|---|---|---|
0ae194f099 | |||
0a683479f9 | |||
16b17cc0a7 | |||
5ab1c60f72 | |||
|
9b52e791a6 | ||
|
631e4987d6 | ||
|
38bc50d8a1 | ||
|
21cd1239e3 | ||
|
2c45f65a39 | ||
|
3713ba9cf2 | ||
|
6a2ecb14c3 | ||
|
99ed45f2fe | ||
|
cefdc65df1 | ||
|
1db1d5353b | ||
|
15739f7917 | ||
|
54993de287 | ||
|
052dc251a1 | ||
|
18d3ea778d | ||
|
2815e3283b | ||
|
977f6e2a21 | ||
|
fec4dc45ef | ||
|
cb621c21ec | ||
|
f132421357 | ||
|
0681b8cf91 | ||
|
c3e58abfc1 | ||
|
c484d727f5 | ||
|
d74cb0b1ad | ||
|
ce61a4607e | ||
|
d06d121bea | ||
|
8d9e3937e6 | ||
|
7b718c43aa | ||
|
f56dc3ff37 | ||
|
dab0aa4799 | ||
|
44f71c0e2c | ||
|
3496f1610e | ||
|
18134aa424 | ||
|
c89d8e9dce | ||
|
a2dd3e0ca5 | ||
|
a8d34c9990 | ||
|
3c41e47df1 | ||
|
67fd0343db | ||
|
69ebf0cec4 | ||
|
fb6556463b | ||
|
7f5428a31b | ||
|
3d09aee2df | ||
|
b817c6b997 | ||
|
5af776f4c2 | ||
|
d9206fe7fa | ||
|
24c9e9277a | ||
|
f33bfce68c | ||
|
d650ae3dcc | ||
|
0fa4c4da21 | ||
|
0f72bed119 | ||
|
1da0d738ec | ||
|
f3e2fd893d | ||
|
425143b109 | ||
|
3a33e4df9c | ||
|
367a797851 | ||
|
6065dcb24d | ||
|
0caa0ab2da | ||
|
77acc594b2 | ||
|
ba8643b537 | ||
|
ca3e1dd37e | ||
|
95a7df98b3 | ||
|
3a5f1ce2d2 | ||
|
b7c4cb011e | ||
|
67b126ccff | ||
|
de90322304 | ||
|
55626d314e | ||
|
ca47208da7 | ||
|
cb1eb0a5bd | ||
|
0f78055a66 | ||
|
428dc5261e | ||
|
950f00cbd0 | ||
|
479792d2db | ||
|
e0685cf7ae | ||
|
85f2bb252e | ||
|
a0b8b2d5b7 | ||
|
b33280a417 | ||
|
ca77b63c97 | ||
|
f7f332d654 | ||
|
d527cab9f5 | ||
|
e1056c4d20 | ||
|
09d14f7a7d | ||
|
7541b53492 | ||
|
2661631c10 | ||
|
a50b45e784 | ||
|
dca559b365 | ||
|
43f73c5403 | ||
|
77517f6a16 | ||
|
e378121fbe | ||
|
917d6a8c19 | ||
|
af6b091cda | ||
|
8d154b5e8a | ||
|
f67548a159 | ||
|
f5f94a1026 | ||
|
bd2a028370 | ||
|
c6170b5caf | ||
|
a740aadbdc | ||
|
f54d22beb7 | ||
|
8f2c8493bd | ||
|
b7f03b872c | ||
|
b866641fac | ||
|
2ba1c54cf5 | ||
|
da08c6fe8c | ||
|
91bb98b0b9 | ||
|
256646d082 | ||
|
a2ec5405a2 | ||
|
4772ab8e0f | ||
|
564e644807 | ||
|
8cffe5c5a6 | ||
|
c392f3a759 | ||
|
f3c6bb0339 | ||
|
584a073ee0 | ||
|
0f6851adf8 | ||
|
dd6a5948ef | ||
|
95a458efc9 | ||
|
a8409b4828 | ||
|
8c431e95c7 | ||
|
5a7040767e | ||
|
7d10366f01 | ||
|
9c28f9f228 | ||
|
f921a67608 | ||
|
984aaecc53 | ||
|
37e0603ebf | ||
|
ab2cd6bd7d | ||
|
e3318d26c7 | ||
|
e315feb737 | ||
|
4b254b8d4e | ||
|
0bc4277389 | ||
|
8c9c083d26 | ||
|
fb3f26cdd4 | ||
|
2189417343 | ||
|
9182daacb8 | ||
|
b8bdeb5278 | ||
|
f07fad7951 | ||
|
9276975a45 | ||
|
9388496662 | ||
|
2bd2c95e39 | ||
|
01515377b4 | ||
|
35605fd9a9 | ||
|
05ed4d9c5c | ||
|
22821dbd55 | ||
|
74066f666e | ||
|
0de4408797 | ||
|
fc0235a1ce | ||
|
db5c9f4f55 | ||
|
3fd6a893dd | ||
|
34115f41cf | ||
|
388535bb3a | ||
|
e89b2fae5c | ||
|
d96c8abb6c |
49 changed files with 4070 additions and 855 deletions
3
.env.example
Normal file
3
.env.example
Normal 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
17
.eslintrc.json
Normal 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
27
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal 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)
|
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal 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.
|
12
.gitignore
vendored
12
.gitignore
vendored
|
@ -1,5 +1,9 @@
|
|||
node_modules/
|
||||
#VSCode configurations.
|
||||
.vscode
|
||||
package-lock.json
|
||||
releasenotes.txt
|
||||
config.json
|
||||
|
||||
# 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
9
LICENSE.md
Normal 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.
|
50
README.md
50
README.md
|
@ -1,13 +1,39 @@
|
|||
# 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%">
|
||||
|
||||
# Anitrox Stable Branch (anitrox_stable)
|
||||
This is the stable branch, If you want the prepackaged and prepared builds, you're at the right place.
|
||||
# Dependencies to get started
|
||||
To begin, you will need to satisfy the following dependencies:
|
||||
Node.JS: 14
|
||||
npm: 6.14
|
||||
# Let's get this ~~party~~ bot started!
|
||||
For first time start up, You will need to run ``npm install`` to install the needed npm packages.
|
||||
Afterwards fill out the ``config-example.json`` and rename it to ``config.json``, then just run ``node start.js``!
|
||||
⚠️ If you don't specify the Owner ID, Some commands such as the bot controls will be unusable!
|
||||
# Support
|
||||
Anitrox isn't really supported but you can get help from the Discord server if you need any: discord.gg/5nQtMNpf43
|
||||
|
|
27
commands.md
27
commands.md
|
@ -1,27 +0,0 @@
|
|||
# Anitrox Command List
|
||||
<> = Optionable
|
||||
<br>
|
||||
[] = Required
|
||||
|
||||
|Command|Arguments |Description |
|
||||
|-------|----------|------------|
|
||||
|Help |none |Help? Help!!|
|
||||
|8ball |[Question]|Ask a question, Any question! |
|
||||
|avatar |\<Member\> |Get a users beautiful avatar |
|
||||
|bonk |[Member] | Bonk, no horny. |
|
||||
|cheese |\<Member\>| Cheese.|
|
||||
|cuddle |[Member] | Cuddle someone! |
|
||||
|hug |[Member] | Hug someone! |
|
||||
|info |none | Information about the bot and host.
|
||||
|invite |none | Invite Anitrox to your server!
|
||||
|kiss |[Member] | Kiss someone! |
|
||||
|leskiss|[Member] | Lesbain kiss (Suggested by Emi)
|
||||
|lick |[Member] | Did you just lick me!?
|
||||
|nom |[Member] | Nom someone or something
|
||||
|opensource| none | Source code for Anitrox
|
||||
|pat |[Member] | Pat someone!
|
||||
|ping |none | Ping Elon Musk! or Mars! nah jk, Discord.
|
||||
|poke |[Member] | Poke someone!
|
||||
|slap |[Member] | Slap someone :(
|
||||
|snuggle|[Member] | Snuggle someone!
|
||||
|uinfo |[Member] | Information about an user
|
|
@ -1,30 +1,47 @@
|
|||
module.exports = {
|
||||
name: '8ball',
|
||||
description: 'Ask Anitrox a question, any question! and they will answer it!',
|
||||
syntax: ["[Question]"],
|
||||
async execute(client, message, args, config) {
|
||||
const index = Math.floor(Math.random() * config.answers.length);
|
||||
const answer = config.answers[index]
|
||||
const question = args.slice(0).join(" ")
|
||||
const { ApplicationCommandOptionType } = require('discord.js');
|
||||
|
||||
if (!question) {
|
||||
await message.channel.send(client.generateErrorMessage("You need to ask a question!", message.author.displayAvatarURL));
|
||||
} else {
|
||||
await message.channel.send({embed: {
|
||||
"title": ":8ball: 8Ball",
|
||||
"description": `Your amazing question: **${question}**`,
|
||||
"color": 9442302,
|
||||
"footer": {
|
||||
"icon_url": message.author.displayAvatarURL(),
|
||||
"text": config.footerTxt
|
||||
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": [
|
||||
fields: [
|
||||
{
|
||||
"name": "Answer",
|
||||
"value": `${answer}`
|
||||
name: 'Answer',
|
||||
value: `${answer}`
|
||||
}
|
||||
]
|
||||
}});
|
||||
}
|
||||
}]
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
52
commands/about.js
Normal file
52
commands/about.js
Normal 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 }
|
||||
]
|
||||
}]
|
||||
};
|
||||
}
|
||||
};
|
|
@ -1,21 +1,42 @@
|
|||
const { ApplicationCommandOptionType } = require('discord.js');
|
||||
|
||||
module.exports = {
|
||||
|
||||
name: "avatar",
|
||||
name: require('path').parse(__filename).name,
|
||||
description: "Gets a user's avatar.",
|
||||
async execute(client, message, args, config) {
|
||||
|
||||
const user = message.mentions.users.first() || client.users.cache.get(args[0]) || message.author;
|
||||
options: [{
|
||||
name: 'user',
|
||||
description: 'Another user',
|
||||
required: false,
|
||||
type: ApplicationCommandOptionType.User
|
||||
},
|
||||
{
|
||||
name: 'userid',
|
||||
description: "Another user's ID",
|
||||
required: false,
|
||||
type: ApplicationCommandOptionType.User
|
||||
}],
|
||||
|
||||
await message.channel.send({embed: {
|
||||
"title": `:frame_photo: ${user.username}'s Beautiful Avatar!`,
|
||||
"color": 9442302,
|
||||
"footer": {
|
||||
"icon_url": message.author.displayAvatarURL(),
|
||||
"text": config.footerTxt
|
||||
},
|
||||
"image": {
|
||||
"url": user.displayAvatarURL()
|
||||
}
|
||||
}});
|
||||
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 }
|
||||
|
||||
}]
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,25 +1,40 @@
|
|||
const { ApplicationCommandOptionType } = require('discord.js');
|
||||
|
||||
module.exports = {
|
||||
|
||||
name: "bonk",
|
||||
description: "Bonks a user!",
|
||||
async execute(client, message, _, config) {
|
||||
const taggedUser = message.mentions.users.first();
|
||||
|
||||
if(!taggedUser) {
|
||||
await message.channel.send(client.generateErrorMessage("You need to @mention a user!", message.author.displayAvatarURL()));
|
||||
} else {
|
||||
await message.channel.send({embed: {
|
||||
"title": "<a:SylvBonk:801185845847130113> Bonk",
|
||||
"description": `${taggedUser} You have been bonked by ${message.author}!`,
|
||||
"color": 9442302,
|
||||
"footer": {
|
||||
"icon_url": message.author.displayAvatarURL(),
|
||||
"text": config.footerTxt
|
||||
name: require('path').parse(__filename).name,
|
||||
description: 'Bonks a user!',
|
||||
options: [{
|
||||
name: 'user',
|
||||
description: 'The user to bonk',
|
||||
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: '<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"
|
||||
image: {
|
||||
url: 'https://cdn.discordapp.com/attachments/793537380330111028/801194481549312060/HappyBONK.gif'
|
||||
}
|
||||
}});
|
||||
}
|
||||
}]
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,23 +1,40 @@
|
|||
const { ApplicationCommandOptionType } = require('discord.js');
|
||||
|
||||
module.exports = {
|
||||
name: "cheese",
|
||||
description: "Cheese an user, or run just ``n!cheese`` for a surprise :eyes:",
|
||||
async execute(_0, message, _1, config) {
|
||||
const taggedUser = message.mentions.users.first();
|
||||
if(!taggedUser) {
|
||||
await message.channel.send("*slams cheese on desk*\n**Cheese.** https://www.youtube.com/watch?v=Or4IE8fkpn4");
|
||||
} else {
|
||||
await message.channel.send({embed: {
|
||||
"title": ":cheese: Cheesed",
|
||||
"description": `${taggedUser} You have been cheesed by ${message.author}!`,
|
||||
"color": 16312092,
|
||||
"footer": {
|
||||
"icon_url": message.author.displayAvatarURL(),
|
||||
"text": config.footerTxt
|
||||
|
||||
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"
|
||||
image: {
|
||||
url: 'https://cdn.discordapp.com/attachments/803658122299572255/812867714368536636/R06325af354168febcafd96b8328b7590.png'
|
||||
}
|
||||
}});
|
||||
}
|
||||
}]
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
42
commands/choose.js
Normal file
42
commands/choose.js
Normal 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
49
commands/contributors.js
Normal 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)'
|
||||
}
|
||||
]
|
||||
}]
|
||||
};
|
||||
}
|
||||
};
|
|
@ -1,35 +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"
|
||||
'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!",
|
||||
async execute(client, message, _, config) {
|
||||
name: require('path').parse(__filename).name,
|
||||
description: 'Cuddle a user!',
|
||||
options: [{
|
||||
name: 'user',
|
||||
description: 'The user to cuddle',
|
||||
required: true,
|
||||
type: ApplicationCommandOptionType.User
|
||||
}],
|
||||
|
||||
const taggedUser = message.mentions.users.first();
|
||||
const index = Math.floor(Math.random() * gifchoices.length);
|
||||
const gif = (gifchoices[index]);
|
||||
async parseMessage (client, config, message) {
|
||||
await message.channel.send(this.handle(client, config, message.author, message.mentions.users.first()));
|
||||
},
|
||||
|
||||
if(!taggedUser) {
|
||||
await message.channel.send(client.generateErrorMessage("You need to @mention a user!", message.author.displayAvatarURL()));
|
||||
} else {
|
||||
await message.channel.send({embed: {
|
||||
"title": ":heart: Cuddle",
|
||||
"description": `${taggedUser} You have been cuddled by ${message.author}!`,
|
||||
"color": 9442302,
|
||||
"footer": {
|
||||
"icon_url": message.author.displayAvatarURL(),
|
||||
"text": config.footerTxt
|
||||
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
|
||||
image: {
|
||||
url: gif
|
||||
}
|
||||
}});
|
||||
}
|
||||
}]
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,34 +1,53 @@
|
|||
const { inspect } = require("util");
|
||||
const { ApplicationCommandOptionType } = require('discord.js');
|
||||
const { inspect } = require('util');
|
||||
|
||||
module.exports = {
|
||||
|
||||
name: 'eval',
|
||||
description: 'Executes JS code',
|
||||
async execute(client, message, args, config) {
|
||||
if (message.author.id == config.ownerID) {
|
||||
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 code = args.join(" ");
|
||||
const evaled = inspect(eval(code));
|
||||
await message.channel.send(evaled, {code:"xl"});
|
||||
// await message.channel.send(evaled, { code: 'xl' });
|
||||
return `\`\`\`js\n${evaled}\n\`\`\``;
|
||||
} catch (error) {
|
||||
await message.channel.send({embed: {
|
||||
"title": "<:AnitroxError:809651936563429416> **Something went wrong! **",
|
||||
"color": 13632027,
|
||||
"footer": {
|
||||
"icon_url": message.author.displayAvatarURL(),
|
||||
"text": config.footerTxt
|
||||
},
|
||||
"fields": [
|
||||
{
|
||||
"name": "**What Happened?**",
|
||||
"value": "The command you tried to run failed to execute due to an error."
|
||||
return {
|
||||
embeds: [{
|
||||
title: '<:AnitroxError:809651936563429416> **Something went wrong! **',
|
||||
color: 13632027,
|
||||
footer: {
|
||||
icon_url: user.displayAvatarURL(),
|
||||
text: config.footerTxt
|
||||
},
|
||||
{
|
||||
"name": "Error Info",
|
||||
"value": error.message
|
||||
}
|
||||
]
|
||||
}});
|
||||
fields: [
|
||||
{
|
||||
name: '**What Happened?**',
|
||||
value: 'The command you tried to run failed to handle due to an error.'
|
||||
},
|
||||
{
|
||||
name: 'Error Info',
|
||||
value: error.message
|
||||
}
|
||||
]
|
||||
}]
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,28 +1,64 @@
|
|||
module.exports = {
|
||||
|
||||
name: 'help',
|
||||
description: 'Get help on anything from commands, to what the bot does! just not your homework..',
|
||||
syntax: '<Command>',
|
||||
const { ApplicationCommandOptionType } = require('discord.js');
|
||||
|
||||
async execute(_0, message, _1, config) {
|
||||
await message.channel.send({embed: {
|
||||
"title": "HELP! SEYMOUR! THE BOT IS ON FIRE!",
|
||||
"description": "Get help on anything from commands, to what the bot does! just not your homework..",
|
||||
"color": 9442302,
|
||||
"footer": {
|
||||
"icon_url": message.author.displayAvatarURL(),
|
||||
"text": `${config.footerTxt} | No mother it's just the northern lights`
|
||||
},
|
||||
"fields": [
|
||||
{
|
||||
"name": "Command List",
|
||||
"value": "[Click here!](https://github.com/IDeletedSystem64/anitrox/blob/dev/commands.md)"
|
||||
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
|
||||
},
|
||||
{
|
||||
"name": "...Or is the bot actually on fire?",
|
||||
"value": "Join the [support server!](https://discord.gg/grebRGsBZ3)"
|
||||
}
|
||||
]
|
||||
}});
|
||||
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' }
|
||||
]
|
||||
}]
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,34 +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"
|
||||
'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 a user!",
|
||||
async execute(client, message, _, config) {
|
||||
const taggedUser = message.mentions.users.first();
|
||||
|
||||
if(!taggedUser) {
|
||||
await message.channel.send(client.generateErrorMessage("You need to @mention a user!", message.author.displayAvatarURL()));
|
||||
} else {
|
||||
const gif = gifchoices[Math.floor(Math.random() * gifchoices.length)];
|
||||
await message.channel.send({embed: {
|
||||
"title": "<a:ABlobCatHuggle:801232248035999784> Hug",
|
||||
"description": `${taggedUser} You have been hugged by ${message.author}!`,
|
||||
"color": 8311585,
|
||||
"footer": {
|
||||
"icon_url": message.author.displayAvatarURL(),
|
||||
"text": config.footerTxt
|
||||
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
|
||||
image: {
|
||||
url: gif
|
||||
}
|
||||
}});
|
||||
}
|
||||
}]
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
106
commands/info.js
106
commands/info.js
|
@ -1,106 +0,0 @@
|
|||
module.exports = {
|
||||
|
||||
name: 'info',
|
||||
description: 'Shows bot and host information',
|
||||
async execute(client, message, _, config) {
|
||||
|
||||
function Uptime(uptime) {
|
||||
const totalSeconds = (uptime / 1000);
|
||||
|
||||
const days = parseInt(totalSeconds / 86400);
|
||||
const hours = parseInt((totalSeconds % 86400) / 3600);
|
||||
const minutes = parseInt((totalSeconds % 3600) / 60);
|
||||
const seconds = parseInt(totalSeconds % 60);
|
||||
|
||||
const daystring = days + (days === 1 ? "day" : "days");
|
||||
const hourstring = hours + (hours === 1 ? "hour" : "hours");
|
||||
const minutetring = minutes + (minutes === 1 ? "minute" : "minutes");
|
||||
const secondstring = seconds + (seconds === 1 ? "second" : "seconds");
|
||||
|
||||
return `${daystring}**, **${hourstring}**, **${minutetring}**, **${secondstring}`;
|
||||
}
|
||||
|
||||
const os = require("os");
|
||||
const osu = require('node-os-utils');
|
||||
const cpu = osu.cpu;
|
||||
await message.channel.send({embed: {
|
||||
"title": "<:AnitroxInfo:809651936831733791> Information about Anitrox",
|
||||
"description": "Everything you've ever wanted to know about your favorite bot, Anitrox!",
|
||||
"color": 9442302,
|
||||
"footer": {
|
||||
"icon_url": message.author.displayAvatarURL(),
|
||||
"text": config.footerTxt
|
||||
},
|
||||
"thumbnail": {
|
||||
"url": client.user.displayAvatarURL()
|
||||
},
|
||||
"fields": [
|
||||
{
|
||||
"name": "Bot Information",
|
||||
"value": "** **"
|
||||
},
|
||||
{
|
||||
"name": "Release Type",
|
||||
"value": config.release,
|
||||
"inline": true
|
||||
},
|
||||
{
|
||||
"name": "Release Version",
|
||||
"value": config.build,
|
||||
"inline": true
|
||||
},
|
||||
{
|
||||
"name": "Uptime",
|
||||
"value": Uptime(client.uptime),
|
||||
"inline": true
|
||||
},
|
||||
{
|
||||
"name": "<:memory:793536677737136178> Bot Memory Usage",
|
||||
"value": `${(process.memoryUsage().heapUsed / 1024 / 1024).toFixed(2)} MiB`,
|
||||
"inline": true
|
||||
},
|
||||
{
|
||||
"name": "Bot Name",
|
||||
"value": client.user.tag,
|
||||
"inline": true
|
||||
},
|
||||
{
|
||||
"name": "Bot ID",
|
||||
"value": `\`${client.user.id}\``,
|
||||
"inline": true
|
||||
},
|
||||
{
|
||||
"name": "<:hostinfo:793529505263517747> Host Information",
|
||||
"value": "** **"
|
||||
},
|
||||
{
|
||||
"name": "<:hostinfo:793529505263517747> Host Uptime",
|
||||
"value": Uptime(os.uptime() * 1000)
|
||||
},
|
||||
{
|
||||
"name": "<:cpu:793672442056802354> CPU Type",
|
||||
"value": `${process.arch}, ${cpu.model()}`
|
||||
},
|
||||
|
||||
{
|
||||
"name": "<:hostos:793866961675223090> OS Type",
|
||||
"value": `${process.platform} / ${os.version()}`
|
||||
},
|
||||
{
|
||||
"name": "<:node:793537507018145813> Node.JS Version",
|
||||
"value": process.version
|
||||
},
|
||||
{
|
||||
"name": "<:hostinfo:793529505263517747> Bot Ping",
|
||||
"value": `${Math.round(client.ws.ping)} ms`,
|
||||
"inline": true
|
||||
},
|
||||
{
|
||||
"name": "<:usersuccess:793885338250641469> **Special Thanks To**",
|
||||
"value": "@OfficialTCGMatt for providing help with development\n @chuu_shi Allowing me to host Anitrox on his server"
|
||||
}
|
||||
|
||||
]
|
||||
}});
|
||||
}
|
||||
};
|
|
@ -1,34 +1,36 @@
|
|||
module.exports = {
|
||||
|
||||
name: 'invite',
|
||||
name: require('path').parse(__filename).name,
|
||||
description: 'Add Anitrox to your beautiful server!',
|
||||
syntax: [],
|
||||
async execute(_0, message, _1, config) {
|
||||
await message.channel.send({embed: {
|
||||
"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": message.author.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 PTB (Public Test Build)",
|
||||
"value": "So you want the fresh and hot builds straight from the oven? We gotchu \n [Add Anitrox PTB to your server](https://discord.com/oauth2/authorize?client_id=489125054261755925&scope=bot&permissions=66186303)"
|
||||
},
|
||||
{
|
||||
"name": "Need help?",
|
||||
"value": "Come join the Anitrox Support Server, for support and much more!\n [Anitrox Support Server](https://discord.gg/grebRGsBZ3)"
|
||||
}
|
||||
]
|
||||
}});
|
||||
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)' }
|
||||
]
|
||||
}]
|
||||
};
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,34 +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"
|
||||
'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 a user!",
|
||||
async execute(client, message, _, config) {
|
||||
const taggedUser = message.mentions.users.first();
|
||||
|
||||
if(!taggedUser) {
|
||||
await message.channel.send(client.generateErrorMessage("You need to @mention a user!", message.author.displayAvatarURL()));
|
||||
} else {
|
||||
const gif = gifchoices[Math.floor(Math.random() * gifchoices.length)];
|
||||
await message.channel.send({embed: {
|
||||
"title": ":heart: Kiss",
|
||||
"description": `${taggedUser} You have been kissed by ${message.author}!`,
|
||||
"color": 9442302,
|
||||
"footer": {
|
||||
"icon_url": message.author.displayAvatarURL(),
|
||||
"text": config.footerTxt
|
||||
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
|
||||
image: {
|
||||
url: gif
|
||||
}
|
||||
}});
|
||||
}
|
||||
}]
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,44 +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"
|
||||
'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: "leskiss",
|
||||
description: "Lesbian kiss <:lesbian:803831629428686849>",
|
||||
async execute(client, message, _, config) {
|
||||
const taggedUser = message.mentions.users.first();
|
||||
|
||||
if(!taggedUser) {
|
||||
await message.channel.send(client.generateErrorMessage("You need to @mention a user!", message.author.displayAvatarURL()));
|
||||
} else {
|
||||
const gif = gifchoices[Math.floor(Math.random() * gifchoices.length)];
|
||||
await message.channel.send({embed: {
|
||||
"title": ":heart: <:lesbian:803831629428686849> Kiss",
|
||||
"description": `${taggedUser} You have been kissed by ${message.author}!`,
|
||||
"color": 8311585,
|
||||
"footer": {
|
||||
"icon_url": message.author.displayAvatarURL(),
|
||||
"text": config.footerTxt
|
||||
|
||||
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
|
||||
image: {
|
||||
url: gif
|
||||
}
|
||||
}});
|
||||
}
|
||||
}]
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,33 +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"
|
||||
'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: "lick",
|
||||
description: "Licks a user!",
|
||||
async execute(client, message, _, config) {
|
||||
const taggedUser = message.mentions.users.first();
|
||||
name: require('path').parse(__filename).name,
|
||||
description: 'Licks a user!',
|
||||
options: [{
|
||||
name: 'user',
|
||||
description: 'The user to lick',
|
||||
required: true,
|
||||
type: ApplicationCommandOptionType.User
|
||||
}],
|
||||
|
||||
if(!taggedUser) {
|
||||
await message.channel.send(client.generateErrorMessage("You need to @mention a user!", message.author.displayAvatarURL()));
|
||||
} else {
|
||||
const gif = gifchoices[Math.floor(Math.random() * gifchoices.length)];
|
||||
await message.channel.send({embed: {
|
||||
"title": "<a:LeafeonLick:806396195089154058> Lick",
|
||||
"description": `${taggedUser} You have been licked by ${message.author}!`,
|
||||
"color": 8311585,
|
||||
"footer": {
|
||||
"icon_url": message.author.displayAvatarURL(),
|
||||
"text": config.footerTxt
|
||||
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": "https://cdn.discordapp.com/attachments/803658122299572255/805314244123951114/cef569820773b0f5d54ee34cfa18e1f8.gif"
|
||||
image: {
|
||||
url: gif
|
||||
}
|
||||
}});
|
||||
}
|
||||
}]
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,33 +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"
|
||||
'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!",
|
||||
async execute(client, message, _, config) {
|
||||
const taggedUser = message.mentions.users.first();
|
||||
name: require('path').parse(__filename).name,
|
||||
description: 'Noms a user!',
|
||||
options: [{
|
||||
name: 'user',
|
||||
description: 'The user to nom',
|
||||
required: true,
|
||||
type: ApplicationCommandOptionType.User
|
||||
}],
|
||||
|
||||
if(!taggedUser) {
|
||||
await message.channel.send(client.generateErrorMessage("You need to @mention a user!", message.author.displayAvatarURL()));
|
||||
} else {
|
||||
const gif = gifchoices[Math.floor(Math.random() * gifchoices.length)];
|
||||
await message.channel.send({embed: {
|
||||
"title": "<:BlobNomBlob:801241117919805510> Nom",
|
||||
"description": `${taggedUser} You have been nommed by ${message.author}!`,
|
||||
"color": 8311585,
|
||||
"footer": {
|
||||
"icon_url": message.author.displayAvatarURL(),
|
||||
"text": config.footerTxt
|
||||
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
|
||||
image: {
|
||||
url: gif
|
||||
}
|
||||
}});
|
||||
}
|
||||
}]
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,32 +0,0 @@
|
|||
module.exports = {
|
||||
name: 'opensource',
|
||||
description: 'Attributions to open source components used by Anitrox',
|
||||
async execute(_0, message, _1, config){
|
||||
await message.channel.send({embed: {
|
||||
"title": "Component Attribution",
|
||||
"description": "Some parts of Anitrox are using open source code, and their attributions are avaliable here!",
|
||||
"color": 52508,
|
||||
"footer": {
|
||||
"icon_url": message.author.displayAvatarURL(),
|
||||
"text": config.footerTxt
|
||||
},
|
||||
"thumbnail": {
|
||||
"url": "https://cdn.discordapp.com/attachments/803658122299572255/838854256471703602/793885335498522685.png"
|
||||
},
|
||||
"fields": [
|
||||
{
|
||||
"name": "Discord.JS",
|
||||
"value": "[Check out the Discord.JS project on GitHub](https://github.com/discordjs/discord.js/)"
|
||||
},
|
||||
{
|
||||
"name": "The Anitrox Project",
|
||||
"value": "[Check out Anitrox on GitHub](https://github.com/IDeletedSystem64/anitrox)"
|
||||
},
|
||||
{
|
||||
"name": "You",
|
||||
"value": "Using and supporting the Anitrox Project, thank you! ❤"
|
||||
}
|
||||
]
|
||||
}});
|
||||
}
|
||||
}
|
|
@ -1,32 +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"
|
||||
'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 a user!",
|
||||
async execute(client, message, _, config) {
|
||||
const taggedUser = message.mentions.users.first();
|
||||
|
||||
if(!taggedUser) {
|
||||
await message.channel.send(client.generateErrorMessage("You need to @mention a user!", message.author.displayAvatarURL()));
|
||||
} else {
|
||||
const gif = gifchoices[Math.floor(Math.random() * gifchoices.length)];
|
||||
await message.channel.send({embed: {
|
||||
"title": "<:pats:801238281286713355> Pat",
|
||||
"description": `${taggedUser} You have been patted by ${message.author}!`,
|
||||
"color": 8311585,
|
||||
"footer": {
|
||||
"icon_url": message.author.displayAvatarURL(),
|
||||
"text": config.footerTxt
|
||||
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
|
||||
image: {
|
||||
url: gif
|
||||
}
|
||||
}});
|
||||
}
|
||||
}]
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,18 +1,31 @@
|
|||
module.exports = {
|
||||
name: "ping",
|
||||
description: "Gets bot ping",
|
||||
async execute(client, message, _, config) {
|
||||
const index = Math.floor(Math.random() * config.locations.length);
|
||||
const location = config.locations[index]
|
||||
|
||||
await message.channel.send({embed:{
|
||||
"title": ":ping_pong: Ping",
|
||||
"description": `**Pong!** We pinged **${location}** and got ${client.ws.ping} ms.`,
|
||||
"color": 9442302,
|
||||
"footer": {
|
||||
"icon_url": message.author.displayAvatarURL(),
|
||||
"text": config.footerTxt
|
||||
}
|
||||
}});
|
||||
|
||||
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
|
||||
}
|
||||
}]
|
||||
};
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,32 +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"
|
||||
'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 a user!",
|
||||
async execute(client, message, _, config) {
|
||||
const taggedUser = message.mentions.users.first();
|
||||
|
||||
if(!taggedUser) {
|
||||
await message.channel.send(client.generateErrorMessage("You need to @mention a user!", message.author.displayAvatarURL()));
|
||||
} else {
|
||||
const gif = gifchoices[Math.floor(Math.random() * gifchoices.length)];
|
||||
await message.channel.send({embed: {
|
||||
"title": "👉 Poke!",
|
||||
"description": `${taggedUser} You have been poked by ${message.author}!`,
|
||||
"color": 8311585,
|
||||
"footer": {
|
||||
"icon_url": message.author.displayAvatarURL(),
|
||||
"text": config.footerTxt
|
||||
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
|
||||
image: {
|
||||
url: gif
|
||||
}
|
||||
}});
|
||||
}
|
||||
}]
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,48 +1,54 @@
|
|||
const { ApplicationCommandOptionType } = require('discord.js');
|
||||
|
||||
module.exports = {
|
||||
name: 'reload',
|
||||
description: 'Reloads a command',
|
||||
async execute(client, message, args, config) {
|
||||
if (message.author.id = config.ownerID) {
|
||||
if (!args.length) {
|
||||
await message.channel.send(client.generateErrorMessage("You forgot to provide anything to reload, you pillock",message.author.displayAvatarURL()));
|
||||
}
|
||||
|
||||
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 = message.client.commands.get(commandName)
|
||||
|| message.client.commands.find(cmd => cmd.aliases && cmd.aliases.includes(commandName));
|
||||
const commandName = arg?.toLowerCase();
|
||||
const command = client.commands.get(commandName);
|
||||
|
||||
if (!command) {
|
||||
await message.channel.send(client.generateErrorMessage(`There is no command with name or alias \`${commandName}\`, ${message.author}!`,message.author.displayAvatarURL()));
|
||||
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);
|
||||
await message.channel.send(`<:AnitroxSuccess:809651936819019796> **Reloaded \`${command.name}\` successfully!**`);
|
||||
console.log(`User reloaded ${command.name}.`)
|
||||
returnMessage += `Successfully reloaded \`${commandName}\`\n`;
|
||||
console.log(`User reloaded ${command.name}.`);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
await message.channel.send(client.generateErrorMessage(`There was an error while reloading \`${command.name}\`:\n\`${error.message}\``, message.author.displayAvatarURL()));
|
||||
returnMessage += `There was an error while reloading \`${command.name}\`\n`;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return returnMessage;
|
||||
} else {
|
||||
message.channel.send({embed: {
|
||||
"title": "<:AnitroxDenied:809651936642203668> **403 Forbidden**",
|
||||
"color": 13632027,
|
||||
"footer": {
|
||||
"icon_url": message.author.displayAvatarURL(),
|
||||
"text": config.footerTxt
|
||||
},
|
||||
"fields": [
|
||||
{
|
||||
"name": "**What Happened?**",
|
||||
"value": "You don't have the appropriate permissions to run this command!"
|
||||
}
|
||||
]
|
||||
}});
|
||||
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());
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
|
|
@ -1,18 +1,49 @@
|
|||
module.exports = {
|
||||
name: 'restart',
|
||||
|
||||
name: require('path').parse(__filename).name,
|
||||
description: 'Restarts the bot',
|
||||
async execute(client, message, args, config) {
|
||||
if (message.author.id == config.ownerID) {
|
||||
console.log("Anitrox is restarting now!")
|
||||
await message.channel.send("<a:NyabotWorking:697147309531594843> Restarting...")
|
||||
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(config.token);
|
||||
await message.channel.send("<:NyabotSuccess:697211376740859914> Restart Successful")
|
||||
console.log("All systems go")
|
||||
} catch(e) {console.log(e);}
|
||||
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 {
|
||||
await message.channel.send("<:NyabotDenied:697145462565896194> Access Denied, You must be bot owner to execute this command.");
|
||||
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()));
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,37 +0,0 @@
|
|||
module.exports = {
|
||||
name: 'setnick',
|
||||
description: 'Sets your nickname',
|
||||
async execute(client, message, args, config) {
|
||||
|
||||
if (message.channel.permissionsFor(message.author).has("CHANGE_NICKNAME")) {
|
||||
const newnick = args.slice(0).join(" ")
|
||||
|
||||
try {
|
||||
await message.member.setNickname(newnick, "Nickname change requested by the server member. If you don't want users to be able to change their nickname disable 'CHANGE_NICKNAME' via Change Nickname in Roles.")
|
||||
await message.channel.send({embed: {
|
||||
"title": "<:AnitroxSuccess:809651936819019796> Nickname Changed",
|
||||
"color": 9442302,
|
||||
"footer": {
|
||||
"icon_url": message.author.displayAvatarURL(),
|
||||
"text": config.footerTxt
|
||||
},
|
||||
"fields": [
|
||||
{
|
||||
"name": "Changed nickname successfully!",
|
||||
"value": "You need to have permission ``CHANGE_NICKNAME`` to change your nick!"
|
||||
},
|
||||
{
|
||||
"name": "New Nickname",
|
||||
"value": newnick,
|
||||
"inline": true
|
||||
}
|
||||
]
|
||||
}});
|
||||
} catch (error) {
|
||||
await message.channel.send(client.generateErrorMessage("Failed to set user nickname. Does the bot have the correct permissions?", message.author.displayAvatarURL()));
|
||||
};
|
||||
} else {
|
||||
await message.channel.send(client.generateErrorMessage("You need to have permission ``CHANGE_NICKNAME`` to change your nick!", message.author.displayAvatarURL()));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,25 +1,39 @@
|
|||
const { ApplicationCommandOptionType } = require('discord.js');
|
||||
|
||||
module.exports = {
|
||||
|
||||
name: "slap",
|
||||
description: "Slaps an user!",
|
||||
async execute(client, message, _, config) {
|
||||
const taggedUser = message.mentions.users.first();
|
||||
name: require('path').parse(__filename).name,
|
||||
description: 'Slaps a user!',
|
||||
options: [{
|
||||
name: 'user',
|
||||
description: 'The user to slap',
|
||||
required: true,
|
||||
type: ApplicationCommandOptionType.User
|
||||
}],
|
||||
|
||||
if(!taggedUser) {
|
||||
await message.channel.send(client.generateErrorMessage("You need to @mention a user!", message.author.displayAvatarURL()));
|
||||
} else {
|
||||
await message.channel.send({embed: {
|
||||
"title": ":anger: Slap",
|
||||
"description": `${taggedUser} You have been slapped by ${message.author}!`,
|
||||
"color": 9442302,
|
||||
"footer": {
|
||||
"icon_url": message.author.displayAvatarURL(),
|
||||
"text": config.footerTxt
|
||||
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"
|
||||
image: {
|
||||
url: 'https://media1.tenor.com/images/b6d8a83eb652a30b95e87cf96a21e007/tenor.gif?itemid=10426943'
|
||||
}
|
||||
}});
|
||||
}
|
||||
}]
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,33 +1,47 @@
|
|||
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"
|
||||
];
|
||||
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: "snuggle",
|
||||
description: "Snuggle an user!",
|
||||
async execute(client, message, _, config) {
|
||||
const taggedUser = message.mentions.users.first();
|
||||
|
||||
if(!taggedUser) {
|
||||
await message.channel.send(client.generateErrorMessage("You need to @mention a user!", message.author.displayAvatarURL()));
|
||||
} else {
|
||||
const gif = gifchoices[Math.floor(Math.random() * gifchoices.length)];
|
||||
await message.channel.send({embed: {
|
||||
"title": "<:BlobSnuggleCat:806759753450782731> Snuggle",
|
||||
"description": `${taggedUser} You have been snuggled by ${message.author}!`,
|
||||
"color": 9442302,
|
||||
"footer": {
|
||||
"icon_url": message.author.displayAvatarURL(),
|
||||
"text": config.footerTxt
|
||||
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
|
||||
image: {
|
||||
url: gif
|
||||
}
|
||||
}});
|
||||
}
|
||||
}]
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,29 +1,35 @@
|
|||
module.exports = {
|
||||
name: "stop",
|
||||
|
||||
name: require('path').parse(__filename).name,
|
||||
description: "IT'S TIME TO STOP!... the bot",
|
||||
async execute(_, message, args, config) {
|
||||
if (message.author.id == config.ownerID) {
|
||||
await message.channel.send({embed: {
|
||||
"title": "<a:AnitroxWorking:697147309531594843> **Shutting Down...**",
|
||||
"description": "See you next time!",
|
||||
"color": 9442302,
|
||||
"footer": {
|
||||
"icon_url": message.author.displayAvatarURL(),
|
||||
"text": config.footerTxt
|
||||
},
|
||||
}});
|
||||
console.log("The bot is shutting down! Bye bye!")
|
||||
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 {
|
||||
await message.channel.send({embed: {
|
||||
"title": "<:AnitroxDenied:809651936642203668> 403 Forbidden",
|
||||
"description": "You need to be the bot owner to execute this command!",
|
||||
"color": 13632027,
|
||||
"footer": {
|
||||
"icon_url": message.author.displayAvatarURL(),
|
||||
"text": config.footerTxt
|
||||
},
|
||||
}});
|
||||
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()));
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,54 +1,73 @@
|
|||
const { ApplicationCommandOptionType } = require('discord.js');
|
||||
|
||||
module.exports = {
|
||||
name: "uinfo",
|
||||
description: "Gets info about an user, such as ID, Discord Join date and more",
|
||||
syntax: "<User>",
|
||||
async execute(client, message, args, config) {
|
||||
const user = message.mentions.users.first() || client.users.cache.get(args[0]) || message.author
|
||||
await message.channel.send({embed: {
|
||||
"title": `Everything you've ever wanted to know about ${user.username}!`,
|
||||
"color": 9442302,
|
||||
"footer": {
|
||||
"icon_url": message.author.displayAvatarURL(),
|
||||
"text": config.footerTxt
|
||||
},
|
||||
"thumbnail": {
|
||||
"url": user.displayAvatarURL()
|
||||
},
|
||||
"fields": [
|
||||
|
||||
{
|
||||
"name": "Username",
|
||||
"value": user.username,
|
||||
"inline": true
|
||||
|
||||
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
|
||||
},
|
||||
{
|
||||
"name": "Discriminator",
|
||||
"value": user.discriminator,
|
||||
"inline": true
|
||||
thumbnail: {
|
||||
url: target.displayAvatarURL()
|
||||
},
|
||||
{
|
||||
"name": "Full Username",
|
||||
"value": user.tag,
|
||||
"inline": true
|
||||
},
|
||||
{
|
||||
"name": "User Profile Picture",
|
||||
"value": user.displayAvatarURL()
|
||||
},
|
||||
{
|
||||
"name": "User Status",
|
||||
value: user.presence.status
|
||||
},
|
||||
{
|
||||
"name": "User ID",
|
||||
"value": `\`${user.id}\``
|
||||
},
|
||||
{
|
||||
"name": "User Joined Discord",
|
||||
"value": user.createdAt,
|
||||
inline: true
|
||||
},
|
||||
]
|
||||
}});
|
||||
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
|
||||
}
|
||||
]
|
||||
}]
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,21 +1,30 @@
|
|||
{
|
||||
"prefix": "n!",
|
||||
"token": "IM SO EXCITED ABOUT BURGER",
|
||||
"ownerID": "MY FAVORITE COLOR IS TWELVE",
|
||||
"release": "anitrox_dev",
|
||||
"build": "Stable",
|
||||
"footerTxt": "Anitrox, made with <3 by IDeletedSystem64 | 2018-2022",
|
||||
|
||||
"statuses": [
|
||||
"with np!help",
|
||||
"with Sophie!",
|
||||
"Trans Rights!",
|
||||
"in your computer",
|
||||
"with my internet router",
|
||||
"ssh: system64@borkeonv2",
|
||||
"YouTube",
|
||||
"with source code",
|
||||
"Visual Studio Code",
|
||||
"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",
|
||||
|
@ -31,8 +40,15 @@
|
|||
"127.0.0.1",
|
||||
"Sophie's computer",
|
||||
"Mars",
|
||||
"Elon Musk",
|
||||
"TMC Software"
|
||||
"Netro Corporation",
|
||||
"System64 Technologies",
|
||||
"myself",
|
||||
"Twilight Sparkle",
|
||||
"the Pokemon Center",
|
||||
"Who asked?",
|
||||
"you",
|
||||
"your mother"
|
||||
|
||||
],
|
||||
"answers": [
|
||||
"Heck no!",
|
||||
|
@ -54,4 +70,4 @@
|
|||
"Good idea!",
|
||||
"Sure"
|
||||
]
|
||||
}
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
|
5
events/error.js
Normal file
5
events/error.js
Normal file
|
@ -0,0 +1,5 @@
|
|||
module.exports = {
|
||||
event: require('path').parse(__filename).name,
|
||||
once: false,
|
||||
listener: () => e => { console.log(`[ERROR] ${e}`); }
|
||||
};
|
24
events/interactionCreate.js
Normal file
24
events/interactionCreate.js
Normal 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
30
events/messageCreate.js
Normal 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
63
events/ready.js
Normal 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
5
events/warn.js
Normal 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
7
functions/getTime.js
Normal 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
50
functions/updateCheck.js
Normal 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
15
functions/uptime.js
Normal 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}`;
|
||||
};
|
2626
package-lock.json
generated
Normal file
2626
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
18
package.json
18
package.json
|
@ -4,13 +4,19 @@
|
|||
"description": "Discord Bot Based on Discord.JS",
|
||||
"main": "start.js",
|
||||
"dependencies": {
|
||||
"discord.js": "^12.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": "IDeletedSystem64",
|
||||
"license": "ISC"
|
||||
"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"
|
||||
}
|
||||
}
|
||||
|
|
112
start.js
112
start.js
|
@ -1,79 +1,55 @@
|
|||
#!/usr/bin/env -S node
|
||||
|
||||
const fs = require('fs');
|
||||
const Discord = require('discord.js');
|
||||
const { Client, Collection, GatewayIntentBits } = require('discord.js');
|
||||
const config = require('./config.json');
|
||||
console.log('Starting!')
|
||||
const client = new Discord.Client();
|
||||
client.commands = new Discord.Collection();
|
||||
|
||||
const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));
|
||||
|
||||
for (const file of commandFiles) {
|
||||
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
|
||||
]
|
||||
});
|
||||
// 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.generateErrorMessage = (errorMsg, messageAuthorURL) => ({embed: {
|
||||
"title": "<:AnitroxError:809651936563429416> Error",
|
||||
"color": 13632027,
|
||||
"footer": {
|
||||
"icon_url": messageAuthorURL,
|
||||
"text": config.footerTxt
|
||||
},
|
||||
"fields": [
|
||||
{
|
||||
"name": "Something went wrong!",
|
||||
"value": errorMsg
|
||||
}
|
||||
]
|
||||
}})
|
||||
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.
|
||||
|
||||
client.on("error", (e) => console.log(`[ERROR] ${error(e)}`));
|
||||
client.on("warn", (e) => (`[WARN] ${warn(e)}`));
|
||||
client.once('ready', () => {
|
||||
console.clear()
|
||||
console.log(' ___ _ __ ');
|
||||
console.log(' / | ____ (_) /__________ _ __');
|
||||
console.log(' / /| | / __ \\/ / __/ ___/ __ \\| |/_/');
|
||||
console.log(' / ___ |/ / / / / /_/ / / /_/ /> < ');
|
||||
console.log('/_/ |_/_/ /_/_/\\__/_/ \\____/_/|_| ');
|
||||
console.log(`${config.release}, ${config.build}`);
|
||||
console.log("Bot online. | Anitrox by IDeletedSystem64 | ALL MY CODE KEEPS BLOWING UP!");
|
||||
// Statuses
|
||||
setInterval(async () => {
|
||||
// Picks a status from the config file
|
||||
const index = Math.floor(Math.random() * config.statuses.length);
|
||||
await client.user.setActivity(config.statuses[index]);
|
||||
}, 20000);
|
||||
|
||||
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.updater = require('./functions/updateCheck.js')(); // da update checker (real)
|
||||
|
||||
// Begin Command Handler
|
||||
client.on('message', async (message) => {
|
||||
|
||||
if (!message.content.startsWith(config.prefix) || message.author.bot) return;
|
||||
|
||||
const args = message.content.slice(config.prefix.length).split(/ +/);
|
||||
const command = args.shift().toLowerCase();
|
||||
|
||||
if (!client.commands.has(command)) return;
|
||||
|
||||
try {
|
||||
await client.commands.get(command).execute(client, message, args, config);
|
||||
} catch (error) {
|
||||
console.stack;
|
||||
message.channel.send({embed: {
|
||||
"title": "<:AnitroxError:809651936563429416> **Something went wrong!**",
|
||||
"description": error.stack,
|
||||
"color": 13632027,
|
||||
"footer": {
|
||||
"icon_url": message.author.displayAvatarURL(),
|
||||
"text": config.footerTxt
|
||||
},
|
||||
}});
|
||||
}
|
||||
});
|
||||
|
||||
client.login(config.token);
|
||||
client.login(process.env.TOKEN);
|
||||
// Login to Discord!
|
||||
|
|
Reference in a new issue