415 lines
9.4 KiB
TypeScript
415 lines
9.4 KiB
TypeScript
import { REST, Routes } from "discord.js";
|
|
import { config } from "dotenv";
|
|
|
|
config();
|
|
|
|
//description in two places is annoying but length limits are different (100 vs 1024 [but sum of all chars in embed cannot be >6000])
|
|
const commands = [
|
|
{
|
|
name: "help",
|
|
description: "Get a list of commands for this bot",
|
|
},
|
|
{
|
|
name: "say",
|
|
description: "Have bot say something in a channel (admin only)",
|
|
options: [
|
|
{
|
|
type: 3,
|
|
name: "text",
|
|
description: "What the bot should say",
|
|
required: true,
|
|
},
|
|
{
|
|
type: 7,
|
|
name: "channel",
|
|
description: "What guild text channel the bot should say the text in",
|
|
required: true,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
name: "roll",
|
|
description: "Roll dice",
|
|
options: [
|
|
{
|
|
type: 4,
|
|
name: "dice_num",
|
|
description: "Amount of dice to roll",
|
|
required: true,
|
|
},
|
|
{
|
|
type: 4,
|
|
name: "dice_faces",
|
|
description: "Max value of each dice",
|
|
required: true,
|
|
},
|
|
{
|
|
type: 5,
|
|
name: "show_calc",
|
|
description: "Show the calculations and each dice roll (default: true)",
|
|
required: false,
|
|
},
|
|
{
|
|
type: 5,
|
|
name: "include_zero",
|
|
description: "Make it possible for the dice to roll 0 (default: false)",
|
|
required: false,
|
|
},
|
|
],
|
|
},
|
|
//economy related
|
|
{
|
|
name: "register_user",
|
|
description: "Register a user so they can participate in the bot economy (admin only)",
|
|
options: [
|
|
{
|
|
type: 6,
|
|
name: "target",
|
|
description: "The user to register",
|
|
required: true,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
name: "bal",
|
|
description: "Show you or someone else's balance",
|
|
options: [
|
|
{
|
|
type: 6,
|
|
name: "target",
|
|
description: "The user to check the balance of",
|
|
required: false,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
name: "change_bal",
|
|
description: "Change a user's balance (admin only)",
|
|
options: [
|
|
{
|
|
type: 6,
|
|
name: "target",
|
|
description: "The user to change the balance of",
|
|
required: true,
|
|
},
|
|
{
|
|
type: 4,
|
|
name: "amount",
|
|
description: "Amount to add/subtract (negative allowed)",
|
|
required: true,
|
|
},
|
|
{
|
|
type: 5,
|
|
name: "negative_allowed",
|
|
description: "Allow user balance to become negative (default: false)",
|
|
required: false,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
name: "transfer",
|
|
description: "Send currency to another user",
|
|
options: [
|
|
{
|
|
type: 6,
|
|
name: "target",
|
|
description: "The user to send to",
|
|
required: true,
|
|
},
|
|
{
|
|
type: 4,
|
|
name: "amount",
|
|
description: "Amount to transfer",
|
|
required: true,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
name: "items",
|
|
description: "See you or someone else's items",
|
|
options: [
|
|
{
|
|
type: 6,
|
|
name: "target",
|
|
description: "The user to check the items of",
|
|
required: false,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
name: "create_item",
|
|
description: "Create item, cannot be made unbuyable after creation (admin only)",
|
|
options: [
|
|
{
|
|
type: 3,
|
|
name: "name",
|
|
description: "Name of the item",
|
|
required: true,
|
|
},
|
|
{
|
|
type: 3,
|
|
name: "description",
|
|
description: "Description of the item",
|
|
required: true,
|
|
},
|
|
{
|
|
type: 4,
|
|
name: "price",
|
|
description: "Price of the item (omit to make unbuyable)",
|
|
required: false,
|
|
},
|
|
{
|
|
type: 5,
|
|
name: "usable",
|
|
description: "Whether it can be /use'd (default: true)",
|
|
required: false,
|
|
},
|
|
{
|
|
type: 8,
|
|
name: "required_role",
|
|
description: "Roles that are required to buy this item. /edit_item to add multiple",
|
|
required: false,
|
|
},
|
|
{
|
|
type: 3,
|
|
name: "items",
|
|
description: "Items required and consumed to buy this item. In format name,quantity|name,quantity",
|
|
required: false,
|
|
},
|
|
//
|
|
],
|
|
},
|
|
{
|
|
name: "store",
|
|
description: "See info about all items",
|
|
options: [],
|
|
},
|
|
{
|
|
name: "change_item_balance",
|
|
description: "Add/remove items from a user",
|
|
options: [
|
|
{
|
|
type: 3,
|
|
name: "name",
|
|
description: "Name of the item",
|
|
required: true,
|
|
autocomplete: true,
|
|
},
|
|
{
|
|
type: 4,
|
|
name: "quantity",
|
|
description: "Amount to add/subtract (negative allowed)",
|
|
required: true,
|
|
},
|
|
{
|
|
type: 6,
|
|
name: "target",
|
|
description: "The user to check the items of",
|
|
required: true,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
name: "buy",
|
|
description: "Buy an item from the store",
|
|
options: [
|
|
{
|
|
type: 3,
|
|
name: "name",
|
|
description: "Name of the item",
|
|
required: true,
|
|
autocomplete: true,
|
|
},
|
|
{
|
|
type: 4,
|
|
name: "quantity",
|
|
description: "Amount of the item to buy",
|
|
required: true,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
name: "use_item",
|
|
description: "Use an item (subtracts from your items)",
|
|
options: [
|
|
{
|
|
type: 3,
|
|
name: "name",
|
|
description: "Name of the item",
|
|
required: true,
|
|
autocomplete: true,
|
|
},
|
|
{
|
|
type: 4,
|
|
name: "quantity",
|
|
description: "Amount of the item to use",
|
|
required: true,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
name: "delete_item",
|
|
description: "Delete item from the store and all users (admin only)",
|
|
options: [
|
|
{
|
|
type: 3,
|
|
name: "name",
|
|
description: "Name of the item",
|
|
required: true,
|
|
autocomplete: true,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
name: "edit_item",
|
|
description: "Create item (admin only)",
|
|
options: [
|
|
{
|
|
type: 3,
|
|
name: "name",
|
|
description: "Name of the item",
|
|
required: true,
|
|
autocomplete: true,
|
|
},
|
|
{
|
|
type: 5,
|
|
name: "delete_existing_roles",
|
|
description: "If true, deletes existing required roles as requirements",
|
|
required: true,
|
|
},
|
|
{
|
|
type: 4,
|
|
name: "price",
|
|
description: "Price of the item",
|
|
required: false,
|
|
},
|
|
{
|
|
type: 3,
|
|
name: "description",
|
|
description: "Description of the item",
|
|
required: false,
|
|
},
|
|
{
|
|
type: 5,
|
|
name: "usable",
|
|
description: "Whether it can be /use'd",
|
|
required: false,
|
|
},
|
|
{
|
|
type: 8,
|
|
name: "required_role",
|
|
description: "Roles that are required to buy this item.",
|
|
required: false,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
name: "role_income",
|
|
description: "See various role income related actions",
|
|
options: [
|
|
{
|
|
type: 1,
|
|
name: "list",
|
|
description: "List all role incomes",
|
|
},
|
|
{
|
|
type: 1,
|
|
name: "create",
|
|
description: "Create a role income (admin only)",
|
|
options: [
|
|
{
|
|
type: 8,
|
|
name: "role",
|
|
description: "Role to give role income to",
|
|
required: true,
|
|
},
|
|
{
|
|
type: 4,
|
|
name: "hours",
|
|
description: "Number of hours between payouts",
|
|
required: true,
|
|
},
|
|
{
|
|
type: 4,
|
|
name: "income",
|
|
description: "Amount to give per user per payout",
|
|
required: true,
|
|
},
|
|
{
|
|
type: 3,
|
|
name: "items",
|
|
description: "Items to give along with role income. In format name,quantity|name,quantity",
|
|
required: false,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
type: 1,
|
|
name: "edit",
|
|
description: "Edit a role income's income or item income (admin only)",
|
|
options: [
|
|
{
|
|
type: 8,
|
|
name: "role",
|
|
description: "Role to give role income to",
|
|
required: true,
|
|
},
|
|
{
|
|
type: 4,
|
|
name: "income",
|
|
description: "Amount to give per user per payout",
|
|
required: true,
|
|
},
|
|
{
|
|
type: 3,
|
|
name: "items",
|
|
description: "Items to give along with role income. In format name,quantity|name,quantity",
|
|
required: false,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
type: 1,
|
|
name: "delete",
|
|
description: "Delete a role income (admin only)",
|
|
options: [
|
|
{
|
|
type: 8,
|
|
name: "role",
|
|
description: "Role to give delete",
|
|
required: true,
|
|
},
|
|
],
|
|
},
|
|
]
|
|
},
|
|
{
|
|
name: "transfer_item",
|
|
description: "Give a(n) item(s) to another user",
|
|
options: [
|
|
{
|
|
type: 3,
|
|
name: "name",
|
|
description: "Name of the item",
|
|
required: true,
|
|
autocomplete: true,
|
|
},
|
|
{
|
|
type: 6,
|
|
name: "target",
|
|
description: "The user to send to",
|
|
required: true,
|
|
},
|
|
{
|
|
type: 4,
|
|
name: "quantity",
|
|
description: "Amount to transfer",
|
|
required: true,
|
|
},
|
|
],
|
|
},
|
|
];
|
|
|
|
(new REST().setToken(process.env.DISCORD_TOKEN)).put(Routes.applicationCommands(process.env.CLIENT_ID), { body: commands }).then(() => console.log("Finished reloading slash commands"));
|
|
|