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: 'Musik', callback_data: 'category_musik' }],
[{ 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
bot.on('callback_query', async (ctx) => {
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 userId = ctx.callbackQuery.from.id;
@ -244,17 +247,17 @@ bot.on('callback_query', async (ctx) => {
if (data === 'wish_fulfilled') {
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, {
message_thread_id: allowedThreadId, // In das richtige Thema posten
});
// Lösche die Nachricht
await ctx.deleteMessage(ctx.callbackQuery.message.message_id);
// Lösche nur die Nachricht, die diesem Wunsch zugeordnet ist
await ctx.deleteMessage(messageId);
// Beantworte die Callback-Abfrage (damit kein Ladekreis bleibt)
// Beantworte die Callback-Abfrage, um den Ladekreis zu entfernen
await ctx.answerCbQuery();
} else if (data === 'wish_not_found') {
// Überprüfe, ob der Benutzer ein Admin ist
@ -270,12 +273,12 @@ bot.on('callback_query', async (ctx) => {
saveNotFoundWish(wishTitle, category);
}
// Bestätige die Speicherung und entferne die 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!`, {
message_thread_id: allowedThreadId, // In das richtige Thema posten
// Bestätige die Speicherung und entferne die spezifische Nachricht
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,
});
await ctx.deleteMessage(ctx.callbackQuery.message.message_id);
await ctx.deleteMessage(messageId);
// Beantworte die Callback-Abfrage
await ctx.answerCbQuery();
@ -283,15 +286,13 @@ bot.on('callback_query', async (ctx) => {
await ctx.answerCbQuery('Nur Admins können diese Funktion nutzen.');
}
} 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.', {
reply_markup: JSON.stringify({
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_')) {
// Benutzer hat die Kategorie ausgewählt
const categoryMap = {
'category_film': 'Film',
'category_serie': 'Serie',
@ -302,30 +303,25 @@ bot.on('callback_query', async (ctx) => {
'category_wwe': 'WWE',
'category_musik': 'Musik',
'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 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] = {
category,
waitingForLink: true, // Warten auf den Link
categoryMessageId: categoryMessage.message_id // Speichern der ID der Kategorie-Nachricht
waitingForLink: true,
categoryMessageId: categoryMessage.message_id
};
// Entferne die Auswahl-Buttons und die /wunsch-Nachricht
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
await ctx.deleteMessage(messageId);
}
} catch (error) {
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 => {
logError(new Error(`Error answering callback query: ${error.message}`));
});