wunsch-bot.js aktualisiert

This commit is contained in:
M_Viper 2024-10-05 17:07:25 +00:00
parent 74ab51d9a1
commit c96391cee8
1 changed files with 22 additions and 26 deletions

View File

@ -88,7 +88,8 @@ function getCategoryKeyboard() {
[{ text: 'WWE', callback_data: 'category_wwe' }], [{ text: 'WWE', callback_data: 'category_wwe' }],
[{ text: 'Musik', callback_data: 'category_musik' }], [{ text: 'Musik', callback_data: 'category_musik' }],
[{ text: 'Bollywood', callback_data: 'category_bollywood' }], [{ text: 'Bollywood', callback_data: 'category_bollywood' }],
[{ text: 'Hörspiele & Comics', callback_data: 'category_hoerspiele_comics' }] // Neue Kategorie hinzugefügt [{ text: 'Hörspiele & Comics', callback_data: 'category_hoerspiele_comics' }],
[{ text: 'PC Games', callback_data: 'category_pc_games' }] // Neue Kategorie hinzugefügt
] ]
}) })
}; };
@ -230,9 +231,11 @@ bot.command('info', async (ctx) => {
// Callback-Query-Handler
// Callback-Query-Handler // Callback-Query-Handler
bot.on('callback_query', async (ctx) => { bot.on('callback_query', async (ctx) => {
const data = ctx.callbackQuery.data; const data = ctx.callbackQuery.data;
const messageId = ctx.callbackQuery.message.message_id; // Speichere die ID der Nachricht, um sie eindeutig zu identifizieren
const chatId = ctx.chat.id.toString(); const chatId = ctx.chat.id.toString();
const userId = ctx.callbackQuery.from.id; const userId = ctx.callbackQuery.from.id;
@ -244,17 +247,17 @@ bot.on('callback_query', async (ctx) => {
if (data === 'wish_fulfilled') { if (data === 'wish_fulfilled') {
const category = userStates[chatId]?.category || 'Kanal'; const category = userStates[chatId]?.category || 'Kanal';
const message = `✨ *Wunsch wurde erfüllt!* ✨\n\n\n🎉 Der gewünschte Inhalt ist jetzt verfügbar.\n\n📺 Bitte schaue im Kanal "${category}" rein.`; const message = `✨ *Wunsch wurde erfüllt!* ✨\n\n🎉 Der gewünschte Inhalt ist jetzt verfügbar.\n\n📺 Bitte schaue im Kanal "${category}" rein.`;
// Sende die Nachricht mit der Information, dass der Wunsch erfüllt wurde // Sende die Nachricht, dass der Wunsch erfüllt wurde
await bot.telegram.sendMessage(allowedChatId, message, { await bot.telegram.sendMessage(allowedChatId, message, {
message_thread_id: allowedThreadId, // In das richtige Thema posten message_thread_id: allowedThreadId, // In das richtige Thema posten
}); });
// Lösche die Nachricht // Lösche nur die Nachricht, die diesem Wunsch zugeordnet ist
await ctx.deleteMessage(ctx.callbackQuery.message.message_id); await ctx.deleteMessage(messageId);
// Beantworte die Callback-Abfrage (damit kein Ladekreis bleibt) // Beantworte die Callback-Abfrage, um den Ladekreis zu entfernen
await ctx.answerCbQuery(); await ctx.answerCbQuery();
} else if (data === 'wish_not_found') { } else if (data === 'wish_not_found') {
// Überprüfe, ob der Benutzer ein Admin ist // Überprüfe, ob der Benutzer ein Admin ist
@ -270,12 +273,12 @@ bot.on('callback_query', async (ctx) => {
saveNotFoundWish(wishTitle, category); saveNotFoundWish(wishTitle, category);
} }
// Bestätige die Speicherung und entferne die Nachricht // Bestätige die Speicherung und entferne die spezifische Nachricht
await bot.telegram.sendMessage(allowedChatId, `📽️ *Sorry*,\n\n"Zum ${category} *"${wishTitle}"* \n\nwurde leider nichts gefunden. Keine Sorge, der Wunsch wurde auf unsere Liste der nicht gefundenen Titel gesetzt. Wir werden ihn prüfen und dich informieren, sobald er verfügbar ist oder gefunden wird. Vielen Dank für deine Geduld!`, { await bot.telegram.sendMessage(allowedChatId, `📽️ *Sorry*,\n\nZum ${category} *"${wishTitle}"* wurde leider nichts gefunden. Keine Sorge, der Wunsch wurde auf unsere Liste der nicht gefundenen Titel gesetzt.`, {
message_thread_id: allowedThreadId, // In das richtige Thema posten message_thread_id: allowedThreadId,
}); });
await ctx.deleteMessage(ctx.callbackQuery.message.message_id); await ctx.deleteMessage(messageId);
// Beantworte die Callback-Abfrage // Beantworte die Callback-Abfrage
await ctx.answerCbQuery(); await ctx.answerCbQuery();
@ -283,15 +286,13 @@ bot.on('callback_query', async (ctx) => {
await ctx.answerCbQuery('Nur Admins können diese Funktion nutzen.'); await ctx.answerCbQuery('Nur Admins können diese Funktion nutzen.');
} }
} else if (data === 'delete_not_found') { } else if (data === 'delete_not_found') {
// Zeige Inline-Tastatur, um nach der Nummer des zu löschenden Eintrags zu fragen
await ctx.reply('Bitte gib die Nummer des Eintrags ein, den du löschen möchtest.', { await ctx.reply('Bitte gib die Nummer des Eintrags ein, den du löschen möchtest.', {
reply_markup: JSON.stringify({ reply_markup: JSON.stringify({
force_reply: true force_reply: true
}) })
}); });
userStates[chatId] = { ...userStates[chatId], waitingForDeleteIndex: true }; // Benutzerstatus auf „warten auf Löschnummer“ setzen userStates[chatId] = { ...userStates[chatId], waitingForDeleteIndex: true };
} else if (data.startsWith('category_')) { } else if (data.startsWith('category_')) {
// Benutzer hat die Kategorie ausgewählt
const categoryMap = { const categoryMap = {
'category_film': 'Film', 'category_film': 'Film',
'category_serie': 'Serie', 'category_serie': 'Serie',
@ -302,30 +303,25 @@ bot.on('callback_query', async (ctx) => {
'category_wwe': 'WWE', 'category_wwe': 'WWE',
'category_musik': 'Musik', 'category_musik': 'Musik',
'category_bollywood': 'Bollywood', 'category_bollywood': 'Bollywood',
'category_hoerspiele_comics': 'Hörspiele & Comics' // Neue Kategorie hinzugefügt 'category_hoerspiele_comics': 'Hörspiele & Comics',
'category_pc_games': 'PC Games'
}; };
const category = categoryMap[data]; const category = categoryMap[data];
const categoryMessage = await ctx.reply(`Du hast die Kategorie ${category} ausgewählt. Bitte gib einen Link zum Cover oder zu Spotify ein. Falls du keinen Link angeben möchtest, trage einfach ein X ein (optional).`, { disable_notification: true }); const categoryMessage = await ctx.reply(`Du hast die Kategorie ${category} ausgewählt. Bitte gib einen Link zum Cover oder zu Spotify ein. Falls du keinen Link angeben möchtest, trage einfach ein X ein (optional).`, { disable_notification: true });
userStates[chatId] = { userStates[chatId] = {
category, category,
waitingForLink: true, // Warten auf den Link waitingForLink: true,
categoryMessageId: categoryMessage.message_id // Speichern der ID der Kategorie-Nachricht categoryMessageId: categoryMessage.message_id
}; };
// Entferne die Auswahl-Buttons und die /wunsch-Nachricht await ctx.deleteMessage(messageId);
if (userStates[chatId]?.commandMessageId) {
await ctx.deleteMessage(userStates[chatId].commandMessageId).catch(e => logError(new Error(`Failed to delete command message: ${e.message}`)));
userStates[chatId].commandMessageId = null; // ID der Befehl-Nachricht auf null setzen
} }
await ctx.deleteMessage(ctx.callbackQuery.message.message_id).catch(e => logError(new Error(`Failed to delete category message: ${e.message}`))); // Lösche die Kategorieauswahl-Nachricht
}
} catch (error) { } catch (error) {
logError(new Error(`Error handling callback query: ${error.message}`)); logError(new Error(`Error handling callback query: ${error.message}`));
} }
// Markiere die Callback-Abfrage als beantwortet // Beantworte die Callback-Abfrage als abgeschlossen
ctx.answerCbQuery().catch(error => { ctx.answerCbQuery().catch(error => {
logError(new Error(`Error answering callback query: ${error.message}`)); logError(new Error(`Error answering callback query: ${error.message}`));
}); });