bot.js aktualisiert
This commit is contained in:
parent
f26d86703e
commit
9476a48234
121
bot.js
121
bot.js
|
@ -12,7 +12,6 @@ const botStartTime = new Date(); // Startzeitpunkt des Bots
|
||||||
const token = process.env.BOT_TOKEN;
|
const token = process.env.BOT_TOKEN;
|
||||||
const bot = new TelegramBot(token, { polling: true });
|
const bot = new TelegramBot(token, { polling: true });
|
||||||
|
|
||||||
|
|
||||||
// Admins aus der .env-Datei laden und als Objekt speichern (ID -> {Name, Username, Zuständigkeit}, in der Reihenfolge)
|
// Admins aus der .env-Datei laden und als Objekt speichern (ID -> {Name, Username, Zuständigkeit}, in der Reihenfolge)
|
||||||
const admins = process.env.ADMINS.split(',').reduce((acc, admin) => {
|
const admins = process.env.ADMINS.split(',').reduce((acc, admin) => {
|
||||||
const [id, name, username, responsibility] = admin.split(':').map(val => val.trim());
|
const [id, name, username, responsibility] = admin.split(':').map(val => val.trim());
|
||||||
|
@ -202,6 +201,65 @@ bot.onText(/\/report/, (msg) => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
bot.onText(/\/documentation/, (msg) => {
|
||||||
|
const chatId = msg.chat.id;
|
||||||
|
const documentationUrl = 'https://deine-dokumentation-url.com'; // Ersetze dies durch die tatsächliche URL
|
||||||
|
|
||||||
|
bot.sendMessage(chatId, 'Hier findest du die technische Dokumentation:', {
|
||||||
|
reply_markup: {
|
||||||
|
inline_keyboard: [[
|
||||||
|
{ text: 'Dokumentation ansehen', url: documentationUrl }
|
||||||
|
]]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Befehl für Verbesserungsvorschläge
|
||||||
|
bot.onText(/\/verbesserung/, async (msg) => {
|
||||||
|
const chatId = msg.chat.id;
|
||||||
|
const userName = msg.from.username ? `@${msg.from.username}` : msg.from.first_name; // Benutzername oder Vorname
|
||||||
|
|
||||||
|
// Frage den Benutzer nach seinem Verbesserungsvorschlag
|
||||||
|
const confirmationMessage = await bot.sendMessage(chatId, '📝 Bitte gib deinen Verbesserungsvorschlag ein:');
|
||||||
|
|
||||||
|
// Warte auf die nächste Nachricht des Benutzers
|
||||||
|
bot.once('message', async (response) => {
|
||||||
|
if (response.chat.id === chatId) { // Sicherstellen, dass die Nachricht vom richtigen Chat kommt
|
||||||
|
const suggestion = response.text; // Der Verbesserungsvorschlag
|
||||||
|
|
||||||
|
// DEV-User aus der .env-Datei holen
|
||||||
|
const devId = process.env.DEV;
|
||||||
|
|
||||||
|
await bot.sendMessage(devId, `✨ Neuer Verbesserungsvorschlag\n\nVon: ${userName}\n\nText:\n\n"${suggestion}"`);
|
||||||
|
bot.sendMessage(chatId, '✅ Danke für deinen Verbesserungsvorschlag! Wir werden ihn uns anschauen.');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
bot.onText(/\/id/, async (msg) => {
|
||||||
|
const chatId = msg.chat.id;
|
||||||
|
const userId = msg.from.id; // Benutzer-ID abrufen
|
||||||
|
const username = msg.from.username ? `@${msg.from.username.replace(/_/g, '\\_')}` : 'unbekannt'; // Benutzernamen abrufen und Unterstrich escapen
|
||||||
|
|
||||||
|
const responseMessage = `
|
||||||
|
📜 *Deine ID:*
|
||||||
|
- *Chat-ID:* ${chatId}
|
||||||
|
- *Benutzer-ID:* ${userId}
|
||||||
|
- *Benutzername:* ${username}
|
||||||
|
`;
|
||||||
|
|
||||||
|
// Prüfen, ob der Befehl in einer Gruppe verwendet wurde
|
||||||
|
if (msg.chat.type === 'group' || msg.chat.type === 'supergroup') {
|
||||||
|
// Sende die Nachricht privat an den Benutzer
|
||||||
|
await bot.sendMessage(userId, responseMessage, { parse_mode: 'Markdown' });
|
||||||
|
// Optional: Informiere den Benutzer in der Gruppe, dass die ID privat gesendet wurde
|
||||||
|
bot.sendMessage(chatId, 'Die Informationen wurden dir privat gesendet.');
|
||||||
|
} else {
|
||||||
|
// Wenn der Befehl im privaten Chat verwendet wird
|
||||||
|
bot.sendMessage(chatId, responseMessage, { parse_mode: 'Markdown' });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// Admins können ihren Status mit /online ändern
|
// Admins können ihren Status mit /online ändern
|
||||||
bot.onText(/\/online/, async (msg) => {
|
bot.onText(/\/online/, async (msg) => {
|
||||||
const adminId = msg.from.id.toString();
|
const adminId = msg.from.id.toString();
|
||||||
|
@ -260,6 +318,11 @@ cron.schedule('0 0 * * *', () => {
|
||||||
console.log("Alle Admins wurden um 00:00 Uhr auf offline gesetzt.");
|
console.log("Alle Admins wurden um 00:00 Uhr auf offline gesetzt.");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Fehlerbehandlung für das Polling
|
||||||
|
bot.on("polling_error", (error) => {
|
||||||
|
console.error(`Polling error: ${error.code}`, error.message);
|
||||||
|
});
|
||||||
|
|
||||||
// Initiale Überprüfung der Admin-Rechte in allen Gruppen
|
// Initiale Überprüfung der Admin-Rechte in allen Gruppen
|
||||||
checkAllGroupsAdminRights();
|
checkAllGroupsAdminRights();
|
||||||
|
|
||||||
|
@ -1020,24 +1083,26 @@ bot.onText(/\/help/, (msg) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Normale Verarbeitung für nicht gesperrte Benutzer (User Befehle)
|
// Normale Verarbeitung für nicht gesperrte Benutzer (User Befehle)
|
||||||
const helpMessage = `📋 Verfügbare Befehle:\n
|
const helpMessage = `📋 Verfügbare Befehle:\n\n
|
||||||
|
- 🔍 /help - Zeigt diese Hilfe-Nachricht an\n
|
||||||
🔍 /help - Zeigt diese Hilfe-Nachricht an\n
|
- ❓ /faq - Zeigt die FAQ an\n
|
||||||
🔗 /links - Zeigt eine Liste der gespeicherten Links an\n
|
- 🔗 /links - Zeigt eine Liste der gespeicherten Links an\n
|
||||||
❓ /faq - Zeigt die FAQ an\n
|
- 📖 /documentation - Bietet Zugang zum Benutzerhandbuch\n
|
||||||
📝 /create_ticket - Reiche ein Support-Ticket ein\n
|
- 📝 /create_ticket - Reiche ein Support-Ticket ein\n
|
||||||
👥 /admin - Zeigt eine Liste der Admins und deren Status\n
|
- 👥 /admin - Zeigt eine Liste der Admins und deren Status\n
|
||||||
💬 /chat - Fordere einen Chat mit einem Admin an\n
|
- 💬 /chat - Fordere einen Chat mit einem Admin an\n
|
||||||
ℹ️ /info - Zeigt Informationen über den Bot an\n
|
- ℹ️ /info - Zeigt Informationen über den Bot an\n
|
||||||
⭐ /rate - Bewerte unseren Support\n
|
- ⭐ /rate - Bewerte unseren Support\n
|
||||||
🔗 /einladung - Erstelle einen persönlichen Einladungslink\n
|
- 🔗 /einladung - Erstelle einen persönlichen Einladungslink\n
|
||||||
📅 /termin - Mache einen Chat-Termin mit einem Admin\n
|
- 🆔 /id - zeigt dir deine USer ID und die Chat ID an\n
|
||||||
📩 /report - Melde eine Nachricht an die Admins\n
|
- 📅 /termin - Mache einen Chat-Termin mit einem Admin\n
|
||||||
🚨 @admin - Informiere die Admins über eine Erwähnung im Chat\n
|
- 🗑 /cancel_termin - Storniert einen Chat-Termin\n
|
||||||
🚨 /escalation - Melde ein Problem an alle Admins\n
|
- 📩 /report - Melde eine Nachricht an die Admins\n
|
||||||
📜 /terms - Zeigt die Nutzungsbedingungen des Bots an\n
|
- 🚨 @admin - Informiere die Admins über eine Erwähnung im Chat\n
|
||||||
🗑 /cancel_termin - Storniert einen Chat-Termin\n
|
- 🚨 /escalation - Melde ein Problem an alle Admins\n
|
||||||
🎓 /tutorial - Startet ein Tutorial\n
|
- 📜 /terms - Zeigt die Nutzungsbedingungen des Bots an\n
|
||||||
|
- 🎓 /tutorial - Startet ein Tutorial\n
|
||||||
|
- 🎤 /verbesserung - Verbesserungsvorschläge für den Bot machen\n
|
||||||
`;
|
`;
|
||||||
|
|
||||||
bot.sendMessage(chatId, helpMessage); // Kein Markdown verwendet
|
bot.sendMessage(chatId, helpMessage); // Kein Markdown verwendet
|
||||||
|
@ -1954,7 +2019,6 @@ function removeInternalNotifications(appointment) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Pfad zur Datei, in der die Benutzer-Daten gespeichert werden
|
// Pfad zur Datei, in der die Benutzer-Daten gespeichert werden
|
||||||
const usersFilePath = path.join(dataDir, 'users.json');
|
const usersFilePath = path.join(dataDir, 'users.json');
|
||||||
|
|
||||||
|
@ -2606,6 +2670,18 @@ const tutorialSteps = [
|
||||||
command: '/cancel_termin',
|
command: '/cancel_termin',
|
||||||
text: 'Mit dem Befehl /cancel_termin kannst du einen bereits vereinbarten Chat-Termin stornieren. Falls du nicht mehr an dem Termin teilnehmen kannst oder ihn aus einem anderen Grund absagen musst, kannst du diesen Befehl verwenden, um den Termin zu annullieren.'
|
text: 'Mit dem Befehl /cancel_termin kannst du einen bereits vereinbarten Chat-Termin stornieren. Falls du nicht mehr an dem Termin teilnehmen kannst oder ihn aus einem anderen Grund absagen musst, kannst du diesen Befehl verwenden, um den Termin zu annullieren.'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
command: '/id',
|
||||||
|
text: 'Mit dem Befehl /id kannst du deine eigene Benutzer-ID abrufen. Dies kann nützlich sein, wenn du deine ID für Support-Anfragen oder andere Zwecke benötigst.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
command: '/verbesserung',
|
||||||
|
text: 'Mit dem Befehl /verbesserung kannst du Verbesserungsvorschläge für den Bot einreichen. Wenn du Ideen oder Feedback hast, wie der Bot verbessert werden kann, kannst du diesen Befehl verwenden, um deine Vorschläge an die Admins zu senden.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
command: '/documentation',
|
||||||
|
text: 'Der Befehl /documentation gibt dir Zugang zu Dokumentationen und Anleitungen, die dir helfen, den Bot effektiver zu nutzen. Hier findest du nützliche Ressourcen, um die Funktionen des Bots besser zu verstehen.'
|
||||||
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
let stepIndex = 0;
|
let stepIndex = 0;
|
||||||
|
@ -2631,7 +2707,7 @@ const sendTutorialStep = (chatId) => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
bot.sendMessage(chatId, 'Das Tutorial ist abgeschlossen! Wenn du weitere Fragen hast, verwende den Befehl /help.');
|
bot.sendMessage(chatId, 'Das Tutorial ist abgeschlossen! Wenn du weitere Fragen hast, verwende den Befehl /help oder wende dich an einen Admin.');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2645,7 +2721,7 @@ bot.on('callback_query', (callbackQuery) => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
bot.onText(/\/(help|links|faq|create_ticket|admin|chat|info|rate|einladung|termin|report|escalation|terms|cancel_termin)/, (msg) => {
|
bot.onText(/\/(help|links|faq|create_ticket|admin|chat|info|rate|einladung|termin|report|escalation|terms|cancel_termin|id|verbesserung|documentation)/, (msg) => {
|
||||||
const chatId = msg.chat.id;
|
const chatId = msg.chat.id;
|
||||||
|
|
||||||
if (chatId === currentChatId) {
|
if (chatId === currentChatId) {
|
||||||
|
@ -2659,4 +2735,5 @@ bot.onText(/\/(help|links|faq|create_ticket|admin|chat|info|rate|einladung|termi
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
console.log('Support-Bot mit Statusprüfung und Benachrichtigungen läuft...');
|
console.log('Support-Bot mit Statusprüfung und Benachrichtigungen läuft...');
|
Loading…
Reference in New Issue