Skip to content

Commit 1c2f3d1

Browse files
authored
consolidate tag space reservation in bot nickname (#672)
1 parent e3bcd95 commit 1c2f3d1

4 files changed

Lines changed: 10 additions & 10 deletions

File tree

source/constants.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
const authPath = "../config/auth.json";
22
const { testGuildId, feedbackChannelId } = require(authPath);
3-
const { MessageLimits } = require("@sapphire/discord.js-utilities");
3+
const { MessageLimits, GuildMemberLimits } = require("@sapphire/discord.js-utilities");
44
const { announcementsChannelId, lastPostedVersion } = require("../config/versionData.json");
55

66
module.exports = {
@@ -33,5 +33,6 @@ module.exports = {
3333
COMPANY_XP_COEFFICIENT: 3,
3434
GLOBAL_MAX_BOUNTY_SLOTS: MessageLimits.MaximumEmbeds,
3535
MAX_EVERGREEN_SLOTS: MessageLimits.MaximumEmbeds,
36-
GLOBAL_COMMAND_COOLDOWN: 2000 // in ms
36+
GLOBAL_COMMAND_COOLDOWN: 2000, // in ms
37+
MAX_BOT_NICKNAME_LENGTH: GuildMemberLimits.MaximumDisplayNameLength - 3 // We reserve 3 characters for festival tag nicknaming
3738
};

source/database/models/companies/Company.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const { italic } = require('discord.js');
22
const { Model, Sequelize, DataTypes } = require('sequelize');
33
const { Hunter } = require('../users/Hunter');
4-
const { GuildMemberLimits } = require('@sapphire/discord.js-utilities');
4+
const { MAX_BOT_NICKNAME_LENGTH } = require('../../../constants');
55

66
/** A Company of bounty hunters contains a Discord Guild's information and settings */
77
class Company extends Model {
@@ -85,7 +85,7 @@ function initModel(sequelize) {
8585
defaultValue: 3600000
8686
},
8787
nickname: { // Let managers save a nickname for BountyBot for constructing festival tags
88-
type: DataTypes.STRING(GuildMemberLimits.MaximumDisplayNameLength)
88+
type: DataTypes.STRING(MAX_BOT_NICKNAME_LENGTH)
8989
},
9090
xpFestivalMultiplier: {
9191
type: DataTypes.REAL,

source/frontend/commands/config-premium.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
const { PermissionFlagsBits, InteractionContextType, MessageFlags, unorderedList } = require('discord.js');
22
const { CommandWrapper } = require('../classes');
3-
const { GLOBAL_MAX_BOUNTY_SLOTS } = require('../../constants');
4-
const { GuildMemberLimits } = require('@sapphire/discord.js-utilities');
3+
const { GLOBAL_MAX_BOUNTY_SLOTS, MAX_BOT_NICKNAME_LENGTH } = require('../../constants');
54
const { updateBotNicknameForFestival } = require('../shared');
65

76
const mainId = "config-premium";
@@ -13,8 +12,8 @@ module.exports = new CommandWrapper(mainId, "Configure premium BountyBot setting
1312

1413
const nickname = interaction.options.getString("nickname");
1514
if (nickname !== null) {
16-
if (nickname.length > GuildMemberLimits.MaximumDisplayNameLength) {
17-
errors.push(`${nickname} could not be set for Nickname. Nicknames cannot be longer than ${GuildMemberLimits.MaximumDisplayNameLength}.`);
15+
if (nickname.length > MAX_BOT_NICKNAME_LENGTH) {
16+
errors.push(`\`${nickname}\` could not be set for Nickname. \`${nickname}\` is ${nickname.length} characters long, but cannot be longer than ${MAX_BOT_NICKNAME_LENGTH}.`);
1817
} else {
1918
updatePayload.nickname = nickname;
2019
interaction.guild.members.fetchMe().then(bountybotGuildMember => {

source/frontend/shared/dAPIRequests.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ const { GuildTextThreadManager, EmbedBuilder, Guild, MessageFlags, Message, Guil
22
const { Bounty, Company, Rank, Participation } = require("../../database/models");
33
const { bountyEmbed, overallScoreboardEmbed, seasonalScoreboardEmbed } = require("./dAPISerializers");
44
const { ascendingByProperty } = require("../../shared");
5-
const { GuildMemberLimits } = require("@sapphire/discord.js-utilities");
5+
const { MAX_BOT_NICKNAME_LENGTH } = require("../../constants");
66

77
/**
88
* @file Discord API (dAPI) Requests - groups of requests to dAPI formalized into functions
@@ -228,7 +228,7 @@ async function updateBotNicknameForFestival(bountyBotGuildMember, company) {
228228
if (tagComponents.length > 0) {
229229
const multiplierTag = tagComponents.map(([type, multiplier]) => `${type} x ${multiplier}`).join(" & ");
230230
const previousNickname = company.nickname ?? "BountyBot";
231-
if (previousNickname.length + multiplierTag.length + 3 <= GuildMemberLimits.MaximumDisplayNameLength) {
231+
if (previousNickname.length + multiplierTag.length <= MAX_BOT_NICKNAME_LENGTH) {
232232
bountyBotGuildMember.setNickname(`${previousNickname} [${multiplierTag}]`);
233233
}
234234
} else {

0 commit comments

Comments
 (0)