wunsch-bot.js aktualisiert
This commit is contained in:
parent
74ab51d9a1
commit
c96391cee8
|
@ -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);
|
||||
|
||||
// Beantworte die Callback-Abfrage (damit kein Ladekreis bleibt)
|
||||
// Lösche nur die Nachricht, die diesem Wunsch zugeordnet ist
|
||||
await ctx.deleteMessage(messageId);
|
||||
|
||||
// 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}`));
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue