Skip to content

Commit 32440be

Browse files
authored
Merge pull request #163 from Chr1s70ph/cleanup
Code Cleanup and bugfixing
2 parents aff2961 + 00d6660 commit 32440be

16 files changed

+350
-250
lines changed

commands/fun/fact.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,10 @@ exports.run = (client: DiscordClient, message: DiscordMessage) => {
3131
new MessageEmbed()
3232
.setTitle(client.translate({ key: 'commands.fun.fact', lng: message.author.language }))
3333
.setDescription(fact)
34-
.setFooter(message.author.tag, message.author.avatarURL({ dynamic: true })),
34+
.setFooter({
35+
text: message.author.tag,
36+
iconURL: message.author.avatarURL({ dynamic: true }),
37+
}),
3538
],
3639
})
3740
}

commands/fun/komedi.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ exports.run = (client: DiscordClient, message: Message) =>
1515
embeds: [
1616
new MessageEmbed()
1717
.setImage('https://cdn.discordapp.com/attachments/768117219812835378/818145599894847488/eqmmb89gml941.png')
18-
.setFooter(message.author.tag, message.author.avatarURL({ dynamic: true })),
18+
.setFooter({
19+
text: message.author.tag,
20+
iconURL: message.author.avatarURL({ dynamic: true }),
21+
}),
1922
],
2023
})

commands/fun/tenor.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,10 @@ function queryTenorAndReply(
7575
*
7676
* {@link MessageEmbedFooter} is set to the user's tag and avatar who issued the command.
7777
*/
78-
let embed = new MessageEmbed()
79-
.setColor('RANDOM')
80-
.setFooter(message.author.tag, message.author.avatarURL({ dynamic: true }))
78+
let embed = new MessageEmbed().setColor('RANDOM').setFooter({
79+
text: message.author.tag,
80+
iconURL: message.author.avatarURL({ dynamic: true }),
81+
})
8182

8283
/**
8384
* Set image of embed if Tenor query returned any.

commands/utility/countdown.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ exports.run = async (client: DiscordClient, message: DiscordMessage) => {
1313
*/
1414
const msgEmbed = new MessageEmbed()
1515
.setTitle(client.translate({ key: 'commands.utility.countdown.Countdown', lng: message.author.language }))
16-
.setFooter(message.author.tag, message.author.avatarURL({ dynamic: true }))
16+
.setFooter({
17+
text: message.author.tag,
18+
iconURL: message.author.avatarURL({ dynamic: true }),
19+
})
1720
.setThumbnail('https://upload.wikimedia.org/wikipedia/commons/3/33/Cartoon_space_rocket.png')
1821

1922
/**

index.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ const backend = new Backend({
1111
})
1212

1313
i18next.use(backend).init({
14-
lng: 'en',
15-
fallbackLng: 'en',
16-
preload: ['en', 'de'],
14+
lng: 'en-US',
15+
fallbackLng: 'en-US',
16+
preload: ['en-US', 'de'],
1717
ns: ['translation'],
1818
defaultNS: 'translation',
1919
debug: true,

interactions/help.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ async function getCommands(client: DiscordClient, interaction: DiscordCommandInt
1414
const commandsEmbed = new MessageEmbed()
1515
.setColor('#ffa500')
1616
.setAuthor({
17-
name: client.translate({ key: 'slashCommands.help', lng: interaction.user.language }),
17+
name: client.translate({ key: 'interactions.help', lng: interaction.user.language }),
1818
iconURL: 'https://bit.ly/3CJU0lf',
1919
})
2020
.setTimestamp()

interactions/klausuren.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ async function klausuren(client: DiscordClient, interaction: DiscordCommandInter
3333

3434
const embed = new MessageEmbed().setAuthor({
3535
name: client.translate({
36-
key: 'slashCommands.klausuren.Exams',
36+
key: 'interactions.klausuren.Exams',
3737
options: {
3838
user: interaction.user.username,
3939
lng: interaction.user.language,

interactions/language.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -54,15 +54,15 @@ exports.Command = async (client: DiscordClient, interaction: DiscordCommandInter
5454
*/
5555
new MessageSelectMenu()
5656
.setCustomId('language')
57-
.setPlaceholder(client.translate({ key: 'slashCommands.language.DefaultSelect', lng: interaction.user.language }))
57+
.setPlaceholder(client.translate({ key: 'interactions.language.DefaultSelect', lng: interaction.user.language }))
5858
.addOptions(options),
5959
)
6060

6161
/**
6262
* Reply with {@link row} to interaction
6363
*/
6464
await interaction.reply({
65-
content: client.translate({ key: 'slashCommands.language.Select', lng: interaction.user.language }),
65+
content: client.translate({ key: 'interactions.language.Select', lng: interaction.user.language }),
6666
components: [row],
6767
ephemeral: true,
6868
})
@@ -106,7 +106,7 @@ exports.SelectMenu = async (client: DiscordClient, interaction: SelectMenuIntera
106106
new MessageEmbed()
107107
.setTitle(
108108
client.translate({
109-
key: 'slashCommands.language.LanguageUpdated',
109+
key: 'interactions.language.LanguageUpdated',
110110
options: {
111111
language: `${flag} ${language}`,
112112
lng: interaction.values[0],

interactions/mensa.ts

+89-38
Original file line numberDiff line numberDiff line change
@@ -77,22 +77,48 @@ export const data = new SlashCommandBuilder()
7777
.setName('mensa')
7878
.setDescription('Was es wohl heute zu Essen gibt?')
7979
.addStringOption(option =>
80-
option
81-
.setName('wochentag')
82-
.setDescription('Der Wochentag, der angezeigt werden soll.')
83-
.addChoices(weekday_choices)
84-
.setRequired(true),
80+
option.setName('wochentag').setDescription('Der Wochentag, der angezeigt werden soll.').addChoices(weekday_choices),
8581
)
8682
.addStringOption(option =>
87-
option
88-
.setName('ort')
89-
.setDescription('Die Mensa, die angezeigt werden soll.')
90-
.addChoices(line_choices)
91-
.setRequired(true),
83+
option.setName('ort').setDescription('Die Mensa, die angezeigt werden soll.').addChoices(line_choices),
9284
)
9385

9486
exports.Command = async (client: DiscordClient, interaction: DiscordCommandInteraction): Promise<void> => {
95-
await mensa(client, interaction, interaction.options.getString('wochentag'), interaction.options.getString('ort'))
87+
const today = new Date()
88+
const weekday = interaction.options.getString('wochentag')
89+
? interaction.options.getString('wochentag')
90+
: today.getHours() >= 16
91+
? getWeekday(today.getDay())
92+
: getWeekday(today.getDay() - 1)
93+
94+
const line = interaction.options.getString('ort') ? interaction.options.getString('ort') : 'adenauerring'
95+
interaction.reply({ embeds: [await mensa(client, weekday, line, interaction)] })
96+
}
97+
98+
/**
99+
* Returns the correct shortend weekday based on {@link index}
100+
* @param {number} index index of Weekday
101+
* @returns {string} weekday
102+
*/
103+
export function getWeekday(index: number): string {
104+
switch (index) {
105+
case 0:
106+
return 'mo'
107+
case 1:
108+
return 'di'
109+
case 2:
110+
return 'mi'
111+
case 3:
112+
return 'do'
113+
case 4:
114+
return 'fr'
115+
case 5:
116+
return 'sa'
117+
case 6:
118+
return 'so'
119+
default:
120+
return 'mo'
121+
}
96122
}
97123

98124
class FoodLine {
@@ -169,7 +195,7 @@ const weekdayOptions = {
169195
so: new Weekday('Sonntag', 6),
170196
}
171197

172-
function _updateJson(client: DiscordClient, interaction: DiscordCommandInteraction): Promise<string> {
198+
function _updateJson(client: DiscordClient): Promise<string> {
173199
return new Promise((resolve, reject) => {
174200
/**
175201
* Fancy API stuff and user credential hashing
@@ -197,7 +223,6 @@ function _updateJson(client: DiscordClient, interaction: DiscordCommandInteracti
197223
/**
198224
* TODO: valid error handling
199225
*/
200-
interaction.reply(`Error, sadface\n${error}`)
201226
reject(error)
202227
})
203228
res.on('end', () => {
@@ -209,7 +234,6 @@ function _updateJson(client: DiscordClient, interaction: DiscordCommandInteracti
209234
/**
210235
* TODO: valid error handling
211236
*/
212-
interaction.followUp('Sadface')
213237
reject(err)
214238
}
215239
resolve(body)
@@ -219,18 +243,25 @@ function _updateJson(client: DiscordClient, interaction: DiscordCommandInteracti
219243
})
220244
}
221245

222-
async function mensa(client, interaction, req_weekday, req_mensa) {
246+
export async function mensa(
247+
client: DiscordClient,
248+
req_weekday,
249+
req_mensa,
250+
interaction: DiscordCommandInteraction | null,
251+
): Promise<MessageEmbed> {
223252
/**
224253
* Mensa embed
225254
*/
226255
const embed = new MessageEmbed().setColor('#FAD51B').setAuthor({ name: '🍽️ Mensaplan' })
227256

257+
const embed_language = interaction?.user?.language ?? 'de'
258+
228259
let raw_mensa, mensa_json
229260
if ((await fs.promises.readFile(`data/mensa.json`)).toString().length === 0) {
230261
/**
231262
* Fetch new mensa plan if none found
232263
*/
233-
const buffer = await _updateJson(client, interaction)
264+
const buffer = await _updateJson(client)
234265
if (buffer) mensa_json = JSON.parse(buffer)
235266
} else {
236267
/**
@@ -259,26 +290,29 @@ async function mensa(client, interaction, req_weekday, req_mensa) {
259290

260291
if (currentDate + 7 * 86400000 > lastDate) {
261292
// 7 * 86400 : number of seconds in one week
262-
embed.setDescription(':fork_knife_plate: Aktualisiere JSON...')
263-
264-
interaction.channel.send({
265-
embeds: [embed],
266-
})
267-
268-
const buffer = await _updateJson(client, interaction)
293+
embed.setDescription(
294+
client.translate({
295+
key: 'interactions.mensa.refreshJSON',
296+
lng: embed_language,
297+
}),
298+
)
299+
300+
const buffer = await _updateJson(client)
269301
if (buffer) mensa_json = JSON.parse(buffer)
270302

271303
mensa_json = await fs.promises.readFile(`data/mensa.json`)
272304
}
273305

274306
if (Object.keys(mensa_json).indexOf(req_mensa) === -1) {
275307
embed
276-
.setTitle(`Mensa ${mensaOptions[req_mensa].name}`)
277-
.setDescription('Diese Mensa hat am angeforderten Tag leider geschlossen.')
278-
279-
interaction.reply({
280-
embeds: [embed],
281-
})
308+
.setTitle(
309+
`${client.translate({ key: 'interactions.mensa.cafeteria', lng: embed_language })} ${
310+
mensaOptions[req_mensa].name
311+
}`,
312+
)
313+
.setDescription(client.translate({ key: 'interactions.mensa.lineClosed', lng: embed_language }))
314+
315+
return embed
282316
}
283317

284318
for (const timestampKey in Object.keys(mensa_json[req_mensa])) {
@@ -297,7 +331,11 @@ async function mensa(client, interaction, req_weekday, req_mensa) {
297331
const date = new Date(dayString)
298332

299333
embed
300-
.setTitle(`Mensa ${mensaOptions[req_mensa].name}`)
334+
.setTitle(
335+
`${client.translate({ key: 'interactions.mensa.cafeteria', lng: embed_language })} ${
336+
mensaOptions[req_mensa].name
337+
}`,
338+
)
301339
.setDescription(
302340
`${date.toLocaleDateString('de-DE', { weekday: 'long', year: 'numeric', month: 'numeric', day: 'numeric' })}`,
303341
)
@@ -311,13 +349,16 @@ async function mensa(client, interaction, req_weekday, req_mensa) {
311349

312350
// eslint-disable-next-line max-depth
313351
if (foodLineData.nodata) {
314-
mealValues = '__Leider gibt es für diesen Tag hier keine Informationen!__'
352+
mealValues = client.translate({ key: 'interactions.mensa.noInformation', lng: embed_language })
315353
break
316354
}
317355

318356
// eslint-disable-next-line max-depth
319357
if (foodLineData.closing_start) {
320-
mealValues = `__Leider ist hier heute geschlossen. Grund: ${foodLineData.closing_text}__`
358+
mealValues = client.translate({
359+
key: 'interactions.mensa.closed',
360+
options: { reason: foodLineData.closing_text, lng: embed_language },
361+
})
321362
break
322363
}
323364

@@ -327,9 +368,15 @@ async function mensa(client, interaction, req_weekday, req_mensa) {
327368

328369
mealValues += ['', '.'].indexOf(dish) === -1 ? `${meal}${dish}\n` : meal
329370

330-
const allAdditions = foodLineData.add.join(', ')
371+
const allAdditives = foodLineData.add.join(', ')
331372

332-
mealValues += allAdditions !== '' ? `_Zusatz: [${allAdditions}]_` : '_Keine Zusätze_'
373+
mealValues +=
374+
allAdditives !== ''
375+
? client.translate({
376+
key: 'interactions.mensa.foodAdditives',
377+
options: { additives: allAdditives, lng: embed_language },
378+
})
379+
: client.translate({ key: 'interactions.mensa.noFoodAdditives', lng: embed_language })
333380

334381
const foodContainsStringToEmoji = {
335382
bio: ':earth_africa:',
@@ -368,11 +415,15 @@ async function mensa(client, interaction, req_weekday, req_mensa) {
368415

369416
embed.addFields({
370417
name: '⠀',
371-
value: `Eine Liste aller Zusätze findest du [hier](${
372-
client.config.mensa.base_url + client.config.mensa.additional_info
373-
}).`,
418+
value: client.translate({
419+
key: 'interactions.mensa.allAdditivesList',
420+
options: {
421+
link: client.config.mensa.base_url + client.config.mensa.additional_info,
422+
lng: embed_language,
423+
},
424+
}),
374425
inline: false,
375426
})
376427

377-
interaction.reply({ embeds: [embed] })
428+
return embed
378429
}

interactions/vorschlag.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -31,17 +31,17 @@ exports.Command = async (client: DiscordClient, interaction: DiscordCommandInter
3131
await interaction.reply({
3232
embeds: [
3333
new MessageEmbed()
34-
.setTitle(client.translate({ key: 'slashCommands.issue.Recieved', lng: interaction.user.language }))
35-
.setDescription(client.translate({ key: 'slashCommands.issue.Thanks', lng: interaction.user.language })),
34+
.setTitle(client.translate({ key: 'interactions.issue.Recieved', lng: interaction.user.language }))
35+
.setDescription(client.translate({ key: 'interactions.issue.Thanks', lng: interaction.user.language })),
3636
],
3737
ephemeral: true,
3838
})
3939
} catch (error) {
4040
await interaction.reply({
4141
embeds: [
4242
new MessageEmbed()
43-
.setTitle(client.translate({ key: 'slashCommands.issue.Error', lng: interaction.user.language }))
44-
.setDescription(client.translate({ key: 'slashCommands.issue.TryAgain', lng: interaction.user.language })),
43+
.setTitle(client.translate({ key: 'interactions.issue.Error', lng: interaction.user.language }))
44+
.setDescription(client.translate({ key: 'interactions.issue.TryAgain', lng: interaction.user.language })),
4545
],
4646
})
4747
throw new Error(error)

interactions/wochenplan.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ async function wochenplan(client: DiscordClient, interaction: DiscordCommandInte
8181
const embed = new MessageEmbed()
8282
.setAuthor({
8383
name: client.translate({
84-
key: 'slashCommands.wochenplan.Schedule',
84+
key: 'interactions.wochenplan.Schedule',
8585
options: {
8686
user: interaction.user.username,
8787
lng: interaction.user.language,
@@ -90,7 +90,7 @@ async function wochenplan(client: DiscordClient, interaction: DiscordCommandInte
9090
})
9191
.setDescription(
9292
client.translate({
93-
key: 'slashCommands.wochenplan.Week',
93+
key: 'interactions.wochenplan.Week',
9494
options: { date: moment(startOfWeek).format('DD.MM.yyyy'), lng: interaction.user.language },
9595
}),
9696
)

0 commit comments

Comments
 (0)