Skip to content

Commit

Permalink
Allow most commands in DMs
Browse files Browse the repository at this point in the history
  • Loading branch information
Glazelf committed Jun 20, 2024
1 parent 828b4e2 commit fafa1cc
Show file tree
Hide file tree
Showing 18 changed files with 147 additions and 131 deletions.
2 changes: 2 additions & 0 deletions commands/auto/personalrole.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
import Discord from "discord.js";
import logger from "../../util/logger.js";
import sendMessage from "../../util/sendMessage.js";
import globalVars from "../../objects/globalVars.json" with { type: "json" };
import isAdmin from "../../util/isAdmin.js";
import colorHexes from "../../objects/colorHexes.json" with { type: "json" };

export default async (client, interaction, ephemeral) => {
try {
if (!interaction.inGuild()) return sendMessage({ client: client, interaction: interaction, content: globalVars.guildRequiredString });
let serverApi = await import("../../database/dbServices/server.api.js");
serverApi = await serverApi.default();
let adminBool = isAdmin(client, interaction.member);
Expand Down
1 change: 1 addition & 0 deletions commands/auto/role.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import isAdmin from "../../util/isAdmin.js";

export default async (client, interaction, ephemeral) => {
try {
if (!interaction.inGuild()) return sendMessage({ client: client, interaction: interaction, content: globalVars.guildRequiredString });
let serverApi = await import("../../database/dbServices/server.api.js");
serverApi = await serverApi.default();
let ephemeralArg = interaction.options.getBoolean("ephemeral");
Expand Down
1 change: 1 addition & 0 deletions commands/info/roleinfo.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import globalVars from "../../objects/globalVars.json" with { type: "json" };

export default async (client, interaction, ephemeral) => {
try {
if (!interaction.inGuild()) return sendMessage({ client: client, interaction: interaction, content: globalVars.guildRequiredString });
let ephemeralArg = interaction.options.getBoolean("ephemeral");
if (ephemeralArg !== null) ephemeral = ephemeralArg;
let role = interaction.options.getRole("role");
Expand Down
6 changes: 4 additions & 2 deletions commands/info/serverinfo.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,13 @@ import globalVars from "../../objects/globalVars.json" with { type: "json" };
import isAdmin from "../../util/isAdmin.js";
import languages from "../../objects/discord/languages.json" with { type: "json" };
import verifLevels from "../../objects/discord/verificationLevels.json" with { type: "json" };
import areEmotesAllowed from "../../util/areEmotesAllowed.js";

export default async (client, interaction, ephemeral) => {
try {
if (!interaction.inGuild()) return sendMessage({ client: client, interaction: interaction, content: globalVars.guildRequiredString });
let adminBool = isAdmin(client, interaction.member);
let adminBot = isAdmin(client, interaction.guild.members.me);
const emotesAllowed = areEmotesAllowed(client, interaction, ephemeral);

let ephemeralArg = interaction.options.getBoolean("ephemeral");
if (ephemeralArg !== null) ephemeral = ephemeralArg;
Expand Down Expand Up @@ -74,7 +76,7 @@ export default async (client, interaction, ephemeral) => {
boosterString = `${guild.premiumSubscriptionCount}/${boosterRequirementTier1}`;
};
};
if (guild.members.me.permissions.has(Discord.PermissionFlagsBits.UseExternalEmojis) || adminBot) boosterString = boosterString + nitroEmote;
if (emotesAllowed) boosterString = boosterString + nitroEmote;
// Icon and banner
let icon = guild.iconURL(globalVars.displayAvatarSettings);
let banner = null;
Expand Down
1 change: 1 addition & 0 deletions commands/mod/ban.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ const requiredPermission = Discord.PermissionFlagsBits.BanMembers;

export default async (client, interaction) => {
try {
if (!interaction.inGuild()) return sendMessage({ client: client, interaction: interaction, content: globalVars.guildRequiredString });
let adminBool = isAdmin(client, interaction.member);
if (!interaction.member.permissions.has(requiredPermission) && !adminBool) return sendMessage({ client: client, interaction: interaction, content: globalVars.lackPermsString });

Expand Down
1 change: 1 addition & 0 deletions commands/mod/kick.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ const requiredPermission = Discord.PermissionFlagsBits.KickMembers;

export default async (client, interaction) => {
try {
if (!interaction.inGuild()) return sendMessage({ client: client, interaction: interaction, content: globalVars.guildRequiredString });
let adminBool = isAdmin(client, interaction.member);
if (!interaction.member.permissions.has(requiredPermission) && !adminBool) return sendMessage({ client: client, interaction: interaction, content: globalVars.lackPermsString });

Expand Down
1 change: 1 addition & 0 deletions commands/mod/modmail.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ modal.addComponents(actionRow1, actionRow2);

export default async (client, interaction) => {
try {
if (!interaction.inGuild()) return sendMessage({ client: client, interaction: interaction, content: globalVars.guildRequiredString });
if (!interaction.guild.features.includes("COMMUNITY") || !interaction.guild.publicUpdatesChannel) return sendMessage({ client: client, interaction: interaction, content: "This server has Community features disabled.\nThese are required for this command to work properly.\nMod mail will be sent to the same channel as community updates." });

return interaction.showModal(modal);
Expand Down
1 change: 1 addition & 0 deletions commands/mod/mute.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ const requiredPermission = Discord.PermissionFlagsBits.ModerateMembers;

export default async (client, interaction, ephemeral) => {
try {
if (!interaction.inGuild()) return sendMessage({ client: client, interaction: interaction, content: globalVars.guildRequiredString });
let adminBool = isAdmin(client, interaction.member);
if (!interaction.member.permissions.has(requiredPermission) && !adminBool) return sendMessage({ client: client, interaction: interaction, content: globalVars.lackPermsString });

Expand Down
2 changes: 1 addition & 1 deletion commands/mod/purge.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ const requiredPermission = Discord.PermissionFlagsBits.ManageMessages;

export default async (client, interaction, ephemeral) => {
try {

if (!interaction.inGuild()) return sendMessage({ client: client, interaction: interaction, content: globalVars.guildRequiredString });
let adminBool = isAdmin(client, interaction.member);
if (!interaction.member.permissions.has(requiredPermission) && !adminBool) return sendMessage({ client: client, interaction: interaction, content: globalVars.lackPermsString });

Expand Down
1 change: 1 addition & 0 deletions commands/mod/roleadd.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ const requiredPermission = Discord.PermissionFlagsBits.ManageRoles;

export default async (client, interaction) => {
try {
if (!interaction.inGuild()) return sendMessage({ client: client, interaction: interaction, content: globalVars.guildRequiredString });
let serverApi = await import("../../database/dbServices/server.api.js");
serverApi = await serverApi.default();
let adminBoolBot = isAdmin(client, interaction.guild.members.me);
Expand Down
1 change: 1 addition & 0 deletions commands/mod/serversettings.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ const requiredPermission = Discord.PermissionFlagsBits.ManageGuild;

export default async (client, interaction) => {
try {
if (!interaction.inGuild()) return sendMessage({ client: client, interaction: interaction, content: globalVars.guildRequiredString });
let adminBool = isAdmin(client, interaction.member);
if (!interaction.member.permissions.has(requiredPermission) && !adminBool) return sendMessage({ client: client, interaction: interaction, content: globalVars.lackPermsString });
let ephemeral = true;
Expand Down
1 change: 1 addition & 0 deletions commands/mod/slowmode.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ const requiredPermission = Discord.PermissionFlagsBits.ManageChannels;

export default async (client, interaction, ephemeral) => {
try {
if (!interaction.inGuild()) return sendMessage({ client: client, interaction: interaction, content: globalVars.guildRequiredString });
let adminBool = isAdmin(client, interaction.member);
ephemeral = false;
let slowmodeSupportedChannelTypes = [
Expand Down
1 change: 1 addition & 0 deletions commands/money/leaderboard.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ export default async (client, interaction, ephemeral) => {
.setDescription(leaderboardStringGlobal)
.setTitle(`Global Leaderboard:`);
} else {
if (!interaction.inGuild()) return sendMessage({ client: client, interaction: interaction, content: globalVars.guildRequiredString });
// Server leaderboard
let icon = interaction.guild.iconURL(globalVars.displayAvatarSettings);
let leaderboardString = money_db.filter(user => client.users.cache.get(user.user_id) && memberFetch.get(user.user_id))
Expand Down
11 changes: 6 additions & 5 deletions commands/virtual_simulation/shinx.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@ import playing_reaction from "../../util/shinx/getPlayingReaction.js";

export default async (client, interaction, ephemeral) => {
try {
// Every subcommand here except maybe "play" should be accessible in DMs honestly but I don't feel like rewriting them significantly for now to actually allow for that
let ephemeralArg = interaction.options.getBoolean("ephemeral");
if (ephemeralArg !== null) ephemeral = ephemeralArg;

let shinx, res;
let shinx, res, time;
let canvas, ctx, img;
let returnString = "";
let userFinder = await interaction.guild.members.fetch();
let messageFile = null;
let time;
let userFinder, messageFile = null;
if (interaction.inGuild()) userFinder = await interaction.guild.members.fetch();

const now = new Date();
let master = interaction.user;
Expand All @@ -37,7 +37,6 @@ export default async (client, interaction, ephemeral) => {
case "info":
shinx = await getShinx(master.id);
const is_user_male = shinx.user_male;
const avatar = client.user.displayAvatarURL(globalVars.displayAvatarSettings);

canvas = Canvas.createCanvas(791, 441);
ctx = canvas.getContext('2d');
Expand Down Expand Up @@ -82,6 +81,7 @@ export default async (client, interaction, ephemeral) => {
return sendMessage({ client: client, interaction: interaction, files: messageFile, ephemeral: ephemeral });
break;
case "feed":
if (!interaction.inGuild()) return sendMessage({ client: client, interaction: interaction, content: globalVars.guildRequiredString });
// let foodArg = interaction.options.getInteger("food");
res = await feedShinx(master.id);
switch (res) {
Expand Down Expand Up @@ -134,6 +134,7 @@ export default async (client, interaction, ephemeral) => {
});
break;
case "play":
if (!interaction.inGuild()) return sendMessage({ client: client, interaction: interaction, content: globalVars.guildRequiredString });
shinx = await getShinx(master.id);
canvas = Canvas.createCanvas(578, 398);
ctx = canvas.getContext('2d');
Expand Down
1 change: 0 additions & 1 deletion events/interactionCreate.js
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@ export default async (client, interaction) => {
let pkmQuizModalId = 'pkmQuizModal';
switch (interaction.type) {
case Discord.InteractionType.ApplicationCommand:
if (!interaction.member) return sendMessage({ client: client, interaction: interaction, content: `Sorry, you're not allowed to use commands in private messages!\nThis is because a lot of the responses require a server to be present.\nDon't worry, similar to this message, most of my replies will be invisible to other server members!` });
// Grab the command data from the client.commands Enmap
let cmd;
let commandName = interaction.commandName.toLowerCase().replace(" ", "");
Expand Down
3 changes: 2 additions & 1 deletion objects/globalVars.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
"sysbotLogChannelID": "771363190780854293",
"currency": "💰",
"embedColor": "#219DCD",
"lackPerms": "You do not have the required permissions to do this.",
"lackPermsString": "You do not have the required permissions to do this.",
"guildRequiredString": "This command can only be used inside a server.",
"starboardLimit": 3,
"battling": {
"yes": false
Expand Down
2 changes: 1 addition & 1 deletion util/areEmotesAllowed.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import Discord from "discord.js";
import isAdmin from "./isAdmin.js";
import logger from "./logger.js";

export default (client, interaction, ephemeral) => {
export default (client, interaction, ephemeral = true) => {
try {
if (!interaction.inGuild()) return true;
let adminBot = isAdmin(client, interaction.guild.members.me);
Expand Down
Loading

0 comments on commit fafa1cc

Please sign in to comment.