Add job icons to logogram response
This commit is contained in:
parent
50a258b4a5
commit
4e79bfd01b
|
@ -1,4 +1,4 @@
|
||||||
# Logogram Discord Bot - A FFXIV Eureka Utility Bot | V1.0.0 - 2025/09/02
|
# Logogram Discord Bot - A FFXIV Eureka Utility Bot | V1.1.0 - 2025/09/04
|
||||||
A Discord bot for Eureka Logos Actions and their recipes.
|
A Discord bot for Eureka Logos Actions and their recipes.
|
||||||
|
|
||||||
## Commands
|
## Commands
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
export const config = {
|
export const config = {
|
||||||
'name': 'Logogram Bot', // Name of the bot
|
'name': 'Logogram Bot', // Name of the bot
|
||||||
'version': '1.0.0', // Version of the bot
|
'version': '1.1.0', // Version of the bot
|
||||||
'token': 'the_bot_token', // Discord API Token for this bot
|
'token': 'the_bot_token', // Discord API Token for this bot
|
||||||
'localToken': 'local_testing_token', // Discord API Token for a secondary OPTIONAL testing bot, THIS MUST BE DIFFERENT FROM "token"
|
'localToken': 'local_testing_token', // Discord API Token for a secondary OPTIONAL testing bot, THIS MUST BE DIFFERENT FROM "token"
|
||||||
'prefix': 'l!', // Prefix for all commands
|
'prefix': 'l!', // Prefix for all commands
|
||||||
|
@ -18,6 +18,13 @@ export const config = {
|
||||||
'red': '',
|
'red': '',
|
||||||
'yellow': '',
|
'yellow': '',
|
||||||
},
|
},
|
||||||
|
'jobType': { // Emojis for job type icons
|
||||||
|
'tank': '',
|
||||||
|
'healer': '',
|
||||||
|
'melee': '',
|
||||||
|
'ranged': '',
|
||||||
|
'magic': '',
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
export default config;
|
export default config;
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
},
|
},
|
||||||
"options": {
|
"options": {
|
||||||
"useTabs": true,
|
"useTabs": true,
|
||||||
"lineWidth": 200,
|
"lineWidth": 250,
|
||||||
"indentWidth": 2,
|
"indentWidth": 2,
|
||||||
"singleQuote": true,
|
"singleQuote": true,
|
||||||
"proseWrap": "preserve"
|
"proseWrap": "preserve"
|
||||||
|
|
|
@ -44,21 +44,35 @@ const getMnemeEmoji = (id: string): string => {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const getActionUses = (uses: number): string => uses === Infinity ? '∞' : `${uses}`;
|
||||||
|
const getActionCast = (cast: number): string => cast === 0 ? 'Instant' : `${cast}s`;
|
||||||
const getHumanDuration = (duration: number) => {
|
const getHumanDuration = (duration: number) => {
|
||||||
if (duration < 60) {
|
if (duration < 60) {
|
||||||
return `${duration}s`;
|
return `${duration}s`;
|
||||||
} else if (duration < (60 * 60)) {
|
} else if (duration < (60 * 60)) {
|
||||||
return `${Math.round(duration / 60 * 10) / 10}m`;
|
return `${Math.round(duration / 60 * 10) / 10}m`;
|
||||||
} else {
|
} else {
|
||||||
return `${Math.round(duration / 60 / 60 * 10) / 10}h`
|
return `${Math.round(duration / 60 / 60 * 10) / 10}h`;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const getJobs = (jobs: Array<string>): string => {
|
||||||
|
let jobIcons = '';
|
||||||
|
|
||||||
|
if (jobs.includes('tank') || jobs[0].startsWith('all')) jobIcons += config.jobType.tank;
|
||||||
|
if (jobs.includes('healer') || jobs[0].startsWith('all')) jobIcons += config.jobType.healer;
|
||||||
|
if (jobs.includes('melee') || jobs[0].startsWith('all')) jobIcons += config.jobType.melee;
|
||||||
|
if (jobs.includes('ranged') || jobs[0].startsWith('all')) jobIcons += config.jobType.ranged;
|
||||||
|
if (jobs.includes('magic') || jobs[0].startsWith('all')) jobIcons += config.jobType.magic;
|
||||||
|
if (jobs.includes('all-nin')) jobIcons += ' (Excludes Ninja)';
|
||||||
|
|
||||||
|
return jobIcons;
|
||||||
|
};
|
||||||
|
|
||||||
const generateActionEmbed = (action: LogosAction): Embed => ({
|
const generateActionEmbed = (action: LogosAction): Embed => ({
|
||||||
title: action.name,
|
title: action.name,
|
||||||
description: `**${action.type}** | ${action.duration ? `**Duration:** ${getHumanDuration(action.duration)} | ` : ''}**Uses:** ${action.uses === Infinity ? '∞' : action.uses} | **Cast:** ${
|
description: `**${action.type}** | ${action.duration ? `**Duration:** ${getHumanDuration(action.duration)} | ` : ''}**Uses:** ${getActionUses(action.uses)} | **Cast:** ${getActionCast(action.cast)} | **Recast:** ${action.recast}s
|
||||||
action.cast === 0 ? 'Instant' : `${action.cast}s`
|
${getJobs(action.jobs)}
|
||||||
} | **Recast:** ${action.recast}s
|
|
||||||
${action.description}`,
|
${action.description}`,
|
||||||
thumbnail: {
|
thumbnail: {
|
||||||
url: `${config.imageUrl}${action.imageId}.png`,
|
url: `${config.imageUrl}${action.imageId}.png`,
|
||||||
|
|
Loading…
Reference in New Issue