Skip to content

Commit

Permalink
end guildCommand #2273
Browse files Browse the repository at this point in the history
  • Loading branch information
BastLast committed Mar 11, 2024
1 parent 11a5d65 commit 3735fa6
Show file tree
Hide file tree
Showing 5 changed files with 71 additions and 36 deletions.
8 changes: 4 additions & 4 deletions Core/src/core/database/game/models/Guild.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
import {DataTypes, Model, Op, QueryTypes, Sequelize} from "sequelize";
import {MissionsController} from "../../../missions/MissionsController";
import {Constants} from "../../../Constants";
import {getFoodIndexOf} from "../../../utils/FoodUtils";
import Player, {Players} from "./Player";
import {NumberChangeReason} from "../../../constants/LogsConstants";
import {PetEntityConstants} from "../../../constants/PetEntityConstants";
import {GuildConstants} from "../../../constants/GuildConstants";
import {GuildPet, GuildPets} from "./GuildPet";
import PetEntity from "./PetEntity";
import {draftBotInstance} from "../../../../index";
import {DraftBotPacket} from "../../../../../../Lib/src/packets/DraftBotPacket";
import {GuildLevelUpPacket} from "../../../../../../Lib/src/packets/notifications/GuildLevelUpPacket";
import moment = require("moment");
import {TopConstants} from "../../../../../../Lib/src/constants/TopConstants";
import { Constants } from "../../../../../../Lib/src/Constants/Constants";
import {NumberChangeReason} from "../../../../../../Lib/src/constants/LogsConstants";
import {GuildConstants} from "../../../../../../Lib/src/constants/GuildConstants";
import {PetEntityConstants} from "../../../../../../Lib/src/constants/PetEntityConstants";

export class Guild extends Model {
declare readonly id: number;
Expand Down
76 changes: 47 additions & 29 deletions Discord/src/commands/guild/GuildCommand.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,18 @@ import {makePacket, PacketContext} from "../../../../Lib/src/packets/DraftBotPac
import {DraftbotInteraction} from "../../messages/DraftbotInteraction";
import i18n from "../../translations/i18n";
import {SlashCommandBuilderGenerator} from "../SlashCommandBuilderGenerator";
import {CommandGuildPacketReq, CommandGuildPacketRes} from "../../../../Lib/src/packets/commands/CommandGuildPacket";
import {
CommandGuildPacketReq,
CommandGuildPacketRes,
GuildMemberPacket
} from "../../../../Lib/src/packets/commands/CommandGuildPacket";
import {SlashCommandBuilder} from "@discordjs/builders";
import {EffectsConstants} from "../../../../Lib/src/constants/EffectsConstants";
import {DraftBotEmbed} from "../../messages/DraftBotEmbed";
import {ColorResolvable, EmbedField, Message, MessageReaction} from "discord.js";
import {Constants} from "../../../../Lib/src/constants/Constants";
import {DiscordCache} from "../../bot/DiscordCache";
import {DraftBotErrorEmbed} from "../../messages/DraftBotErrorEmbed";
import {GuildConstants} from "../../../../Lib/src/constants/GuildConstants";
import {ColorConstants} from "../../../../Lib/src/constants/ColorConstants";
import {Language} from "../../../../Lib/src/Language";
import {KeycloakUser} from "../../../../Lib/src/keycloak/KeycloakUser";
import {KeycloakUtils} from "../../../../Lib/src/keycloak/KeycloakUtils";
import {keycloakConfig} from "../../bot/DraftBotShard";
Expand Down Expand Up @@ -46,6 +47,40 @@ async function getPacket(interaction: DraftbotInteraction, keycloakUser: Keycloa
return makePacket(CommandGuildPacketReq, {askedPlayer, askedGuildName});
}

/**
* Get the icon depending on what type of member the player is (chief, elder, member)
* @param member
* @param packet
*/
function getMemberTypeIcon(member: GuildMemberPacket, packet: CommandGuildPacketRes): string {
return member.id === packet.data!.chiefId ?
i18n.t("commands:guild.emojis.chief") :
member.id === packet.data!.elderId ?
i18n.t("commands:guild.emojis.elder") :
i18n.t("commands:guild.emojis.member");
}

/**
* Return the icons corresponding to the island status of the member
* @param member
*/
function getIslandStatusIcon(member: GuildMemberPacket): string {
return member.islandStatus.isOnPveIsland || member.islandStatus.isOnBoat || member.islandStatus.isPveIslandAlly || member.islandStatus.cannotBeJoinedOnBoat ?
i18n.t("commands:guild.separator")
+ (member.islandStatus.isOnPveIsland ?
i18n.t("commands:guild.emojis.pveIsland") :
"")
+ (member.islandStatus.isOnBoat ?
i18n.t("commands:guild.emojis.boat") :
"")
+ (member.islandStatus.isPveIslandAlly ?
i18n.t("commands:guild.emojis.pveIslandAlly") :
"")
+ (member.islandStatus.cannotBeJoinedOnBoat ?
i18n.t("commands:guild.emojis.cannotBeJoinedOnBoat") :
"") : "";
}

export async function handleCommandGuildPacketRes(packet: CommandGuildPacketRes, context: PacketContext): Promise<void> {
const interaction = DiscordCache.getInteraction(context.discord!.interaction);

Expand All @@ -63,8 +98,6 @@ export async function handleCommandGuildPacketRes(packet: CommandGuildPacketRes,
return;
}

const keycloakUser = (await KeycloakUtils.getUserByKeycloakId(keycloakConfig, packet.askedPlayerKeycloakId!))!;

const guildCommandEmbed = new DraftBotEmbed()
.setThumbnail(GuildConstants.ICON);

Expand All @@ -91,43 +124,28 @@ export async function handleCommandGuildPacketRes(packet: CommandGuildPacketRes,
for (const member of packet.data!.members) {
membersInfos += i18n.t("commands:guild.memberInfos", {
lng: interaction.userLanguage,
icon:
isChief: member.id === packet.data!.chiefId,
isElder: member.id === packet.data!.elderId,
icon: getMemberTypeIcon(member, packet),
pseudo: (await KeycloakUtils.getUserByKeycloakId(keycloakConfig, member.keycloakId))?.attributes.gameUsername,
ranking: member.rank,
score: member.score,
isOnPveIsland: member.islandStatus.isOnPveIsland,
isOnBoat: member.islandStatus.isOnBoat,
isPveIslandAlly: member.islandStatus.isPveIslandAlly,
isInactive: member.islandStatus.isInactive,
isNotBotJoinable: member.islandStatus.cannotBeJoinedOnBoat
islandStatusIcon: getIslandStatusIcon(member)
});
}

guildCommandEmbed.addFields({
name: guildModule.format("members", {
memberCount: members.length,
name: i18n.t("commands:guild.members", {
lng: interaction.userLanguage,
memberCount: packet.data!.members.length,
maxGuildMembers: GuildConstants.MAX_GUILD_MEMBERS
}),
value: membersInfos
});


const reply = await interaction.reply({
embeds: [
new DraftBotEmbed()
.setColor(<ColorResolvable>packet.data!.color)
.setTitle(i18n.t("commands:profile.title", {
lng: interaction.userLanguage,
effect: titleEffect,
pseudo: keycloakUser.attributes.gameUsername,
level: packet.data?.level
}))
.addFields(generateFields(packet, interaction.userLanguage))
],
await interaction.reply({
embeds: [guildCommandEmbed],
fetchReply: true
}) as Message;
});
}
}

Expand Down
4 changes: 2 additions & 2 deletions Discord/src/messages/DraftBotEmbed.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {EmbedBuilder, HexColorString, User} from "discord.js";
import {Constants} from "../../../Lib/src/constants/Constants";
import { ColorConstants } from "../../../Lib/src/constants/ColorConstants";

/**
* Base class for bot embeds
Expand Down Expand Up @@ -30,7 +30,7 @@ export class DraftBotEmbed extends EmbedBuilder {
*Set the color of the embed to the error color
*/
setErrorColor(): this {
this.setColor(<HexColorString>Constants.MESSAGES.COLORS.ERROR);
this.setColor(<HexColorString> ColorConstants.ERROR);
return this;
}
}
7 changes: 7 additions & 0 deletions Discord/src/packetHandlers/handlers/CommandHandlers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ import {CommandTestPacketRes} from "../../../../Lib/src/packets/commands/Command
import {CommandRarityPacketRes} from "../../../../Lib/src/packets/commands/CommandRarityPacket";
import {handleCommandRarityPacketRes} from "../../commands/player/RarityCommand";
import {handleCommandTestPacketRes} from "../../commands/admin/TestCommand";
import {handleCommandGuildPacketRes} from "../../commands/guild/GuildCommand";
import { CommandGuildPacketRes } from "../../../../Lib/src/packets/commands/CommandGuildPacket";

export default class CommandHandlers {
@packetHandler(CommandPingPacketRes)
Expand All @@ -36,6 +38,11 @@ export default class CommandHandlers {
await handleCommandProfilePacketRes(packet, context);
}

@packetHandler(CommandGuildPacketRes)
async guildRes(socket: WebSocket, packet: CommandGuildPacketRes, context: PacketContext): Promise<void> {
await handleCommandGuildPacketRes(packet, context);
}

@packetHandler(CommandInventoryPacketRes)
async inventoryRes(socket: WebSocket, packet: CommandInventoryPacketRes, context: PacketContext): Promise<void> {
await handleCommandInventoryPacketRes(packet, context);
Expand Down
12 changes: 11 additions & 1 deletion Lang/fr/commands.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,17 @@
"guild": {
"embedTitle": "Guilde {{guildName}} | Niveau {{level}}",
"description": ":scroll: `{{description}}`",
"memberInfos": "{{icon}} - **{{pseudo}}** ({{ranking}} {{trophy}} | {{score}} {{medal}}{{islandEmoji}}{{boatEmoji}}{{allyEmoji}}{{ghostEmoji}})\n",
"emojis": {
"chief": "👑",
"elder": "🎖️",
"member": "",
"isOnPveIsland": "🏝️",
"isOnBoat": "⛴️",
"countAsAnAlly": "🤝",
"cannotBeJoinedOnBoat": "👻"
},
"separator": " | ",
"memberInfos": "{{icon}} - **{{pseudo}}** ({{ranking}} :trophy: | {{score}} :medal:{{islandStatusIcon}})\n",
"members": ":person_pouting: {{memberCount}}/{{maxGuildMembers}} membres",
"infoTitle": "Informations",
"islandInfo": ":island: Nombre d'alliés sur l'île mystérieuse : {{membersOnPveIsland}\n",
Expand Down

0 comments on commit 3735fa6

Please sign in to comment.