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: '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}`));
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue