From 9651a702711eada36e42774853255c0f579056b8 Mon Sep 17 00:00:00 2001 From: Lukian LEIZOUR Date: Sat, 1 Apr 2023 14:19:12 +0200 Subject: [PATCH] commit --- app.js | 233 ++++--------------------------------- events/telegramEvents.js | 245 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 266 insertions(+), 212 deletions(-) create mode 100644 events/telegramEvents.js diff --git a/app.js b/app.js index 3400a06..8c8515a 100644 --- a/app.js +++ b/app.js @@ -1,231 +1,40 @@ //Importing libs const { Telegraf } = require('telegraf'); const discord = require('discord.js'); -const fs = require('fs'); -//Importing other files -const { getJoke } = require('./libs/dadJokes'); -const { rtag, r34 } = require('./libs/rule34'); -const { addToLogs, isTrue, getHelp } = require('./libs/botTools'); -const { generateImage, answerQuestion, sendConv } = require('./libs/openAi'); -const { addUserToDb, incrementQuota, usersInDb, getQuota, addConv, delConv, getConvs, addMessage, getMessages, isNewUser } = require('./libs/mysql'); +//Importing events const discordEvents = require('./events/discordEvents'); +const telegramEvents = require('./events/telegramEvents'); //bot initialization const bot = new Telegraf(process.env.TELEGRAM); const client = new discord.Client({intents: 3276799}); -//Telegram commands -bot.command('start', ctx => { - bot.telegram.sendMessage(ctx.chat.id, 'hello there! Welcome to my new telegram bot.\nType /help for help.', {}) - console.log("--> sent the start message to " + ctx.message.from.username); - addToLogs("--> sent the start message to " + ctx.message.from.username); -}) - -bot.command('help', ctx => { - if (ctx.message.text.slice(+6) != '') { - getHelp(ctx.message.text.slice(+6), ctx, bot); - } else { - fs.readFile('./src/telegram_helps/default.txt', 'utf8', (err, data) => { - if (err) { - console.log(err); - bot.telegram.sendMessage(ctx.chat.id, "Something went wrong", {}); - } else { - bot.telegram.sendMessage(ctx.chat.id, data, {parse_mode: 'Markdown'}); - } - }); - } -}) - -bot.command('github', ctx => { - bot.telegram.sendMessage(ctx.chat.id, 'Link of the Gihhub repository :\n -https://github.com/Ninja-Jambon/chaise_bot', {}) - console.log('--> sent github link') - addToLogs('--> sent github link') -}) - -bot.command('truce', ctx => { - isTrue(ctx.update.message.reply_to_message.text, ctx, bot) -}) - -bot.command('chatinfo', ctx => { - console.log('--> sent chat info') - addToLogs('--> sent chat info') - bot.telegram.sendMessage(ctx.chat.id, 'Chat id : ' + ctx.chat.id, {}) -}) - -bot.command('suggest', ctx => { - bot.telegram.sendMessage('-1001782224138', 'New suggestion of ' + ctx.message.from.username + " : " + ctx.message.text.slice(+9), {}) - bot.telegram.sendMessage(ctx.chat.id, 'Your suggestion has been sent to the channel t.me/+SrzC81CGyusyODNk', {}) - console.log('--> sent suggestion message to the channel') - addToLogs('--> sent suggestion message to the channel') -}) - -bot.command('rtag', ctx => { - rtag(ctx.message.text.slice(+6), ctx, bot) -}) - -bot.command('r34', ctx => { - r34(ctx.message.text.slice(+5), ctx, bot) -}) - -bot.command('dadjoke', ctx => { - getJoke(ctx, bot) - console.log('--> sent a dad joke') -}) - -bot.command('g', ctx => { - generateImage(ctx.message.text.slice(+3)).then((res) => { - console.log('[Telegram] Sent image to : ' + ctx.message.text.slice(+3)); - addToLogs('[Telegram] Sent image to : ' + ctx.message.text.slice(+3)); - bot.telegram.sendPhoto(ctx.chat.id, res.data.data[0].url, {}); - }).catch((err) => { - console.log(err); - addToLogs(err); - bot.telegram.sendMessage(ctx.chat.id, "Something went wrong", {}); - }) - - console.log('[Telegram] Generating image to : ' + ctx.message.text.slice(+3)); - addToLogs('[Telegram] Generating image to : ' + ctx.message.text.slice(+3)); - bot.telegram.sendMessage(ctx.chat.id, "Generating image...", {}); -}) - -bot.command('q', async ctx => { - users = await usersInDb(); - - if (!users.includes(ctx.message.from.id.toString())) { - await addUserToDb(ctx.message.from.id, ctx.message.from.username); - addToLogs('[Telegram] Added user ' + ctx.message.from.username + ' to the database'); - console.log('[Telegram] Added user ' + ctx.message.from.username + ' to the database'); - } - - quota = await getQuota(ctx.message.from.id); - - if (quota >= 200000) { - bot.telegram.sendMessage(ctx.chat.id, "You have reached your quota, please wait untill it reset (every months).", {}); - } else { - answerQuestion(ctx.message.text.slice(+3)).then((res) => { - incrementQuota(ctx.message.from.id, res.data.usage.total_tokens); - console.log('[Telegram] Sent answer to : ' + ctx.message.text.slice(+3)); - addToLogs('[Telegram] Sent answer to : ' + ctx.message.text.slice(+3)); - bot.telegram.sendMessage(ctx.chat.id, res.data.choices[0].message.content, {}); - }).catch((err) => { - console.log(err); - addToLogs(err); - bot.telegram.sendMessage(ctx.chat.id, "Something went wrong", {}); - }) - - console.log('[Telegram] Generating answer to : ' + ctx.message.text.slice(+3)); - addToLogs('[Telegram] Generating answer to : ' + ctx.message.text.slice(+3)); - bot.telegram.sendMessage(ctx.chat.id, 'Generating the answer...', {}); - } -}) - -bot.command('quota', async ctx => { - users = await usersInDb(); - - if (!users.includes(ctx.message.from.id.toString())) { - await addUserToDb(ctx.message.from.id, ctx.message.from.username); - addToLogs('[Telegram] Added user ' + ctx.message.from.username + ' to the database'); - console.log('[Telegram] Added user ' + ctx.message.from.username + ' to the database'); - } - - quota = await getQuota(ctx.message.from.id); - - bot.telegram.sendMessage(ctx.chat.id, "You have " + (200000 - quota) + " tokens left.", {}); -}) - -bot.command('lc', async ctx => { - convs = await getConvs(); - - if (convs.length == 0) { - bot.telegram.sendMessage(ctx.chat.id, "No conversation found.", {}); - } else { - message = "Conversations : \n\n" - - convs.forEach(element => { - message += "- " + element + "\n\n" - }); - - bot.telegram.sendMessage(ctx.chat.id, message, {}); - } -}) - -bot.command('addconv', async ctx => { - convs = await getConvs(); - - if (convs.includes(ctx.message.text.slice(+9) || ctx.message.text.slice(+9) == "" || ctx.message.text.contains(" "))) { - bot.telegram.sendMessage(ctx.chat.id, "Verify the name of the conversation (it must not contain spaces and must be unique).", {}); - } else { - await addConv(ctx.message.text.slice(+9)); - bot.telegram.sendMessage(ctx.chat.id, "Conversation added.", {}); - } -}) - -bot.command('delconv', async ctx => { - convs = await getConvs(); - - if (!convs.includes(ctx.message.text.slice(+9))) { - bot.telegram.sendMessage(ctx.chat.id, "Verify the name of the conversation.", {}); - } else { - await delConv(ctx.message.text.slice(+9)); - bot.telegram.sendMessage(ctx.chat.id, "Conversation deleted.", {}); - } -}) - -bot.command('displayconv', async ctx => { - convs = await getConvs(); - - if (!convs.includes(ctx.message.text.slice(+13))) { - bot.telegram.sendMessage(ctx.chat.id, "Verify the name of the conversation.", {}); - } else { - messages = await getMessages(ctx.message.text.slice(+13), "user"); - - message = "Conversation " + ctx.message.text.slice(+13) + " :\n\n"; - - messages.forEach(element => { - if (element.user == "System") {} - else { - message += element.user + " : " + element.content + "\n\n"; - } - }); - - if (message == "") { - bot.telegram.sendMessage(ctx.chat.id, "No message found.", {}); - } else { - bot.telegram.sendMessage(ctx.chat.id, message, {}); - } - } -}) - -bot.command('addmsg', async ctx => { - convs = await getConvs(); - - if (!convs.includes(ctx.message.text.slice(8, ctx.message.text.indexOf(" - ")))) { - bot.telegram.sendMessage(ctx.chat.id, "Verify the name of the conversation.", {}); - } else { - await addMessage(ctx.message.text.slice(+8, ctx.message.text.indexOf(" - ")),"user" , ctx.message.text.slice(ctx.message.text.indexOf(" - ")+3), ctx.message.from.username); - - console.log(ctx.message.text.slice(8, ctx.message.text.indexOf(" - "))); - - messages = await getMessages(ctx.message.text.slice(8, ctx.message.text.indexOf(" - ")), 'role'); - - sendConv(messages).then((res) => { - bot.telegram.sendMessage(ctx.chat.id, res.data.choices[0].message.content, {}); - }).catch((err) => { - console.log(err); - addToLogs(err); - }) - } -}) +//Telegram events +telegramEvents.start(bot); +telegramEvents.help(bot); +telegramEvents.github(bot); +telegramEvents.truce(bot); +telegramEvents.chatinfo(bot); +telegramEvents.suggest(bot); +telegramEvents.rtag(bot); +telegramEvents.r34(bot); +telegramEvents.dadjoke(bot); +telegramEvents.g(bot); +telegramEvents.q(bot); +telegramEvents.quota(bot); +telegramEvents.lc(bot); +telegramEvents.addconv(bot); +telegramEvents.delconv(bot); +telegramEvents.displayconv(bot); +telegramEvents.addmsg(bot); //Discord events discordEvents.ready(client); - discordEvents.newMessage(client); - discordEvents.newInteraction(client); - discordEvents.guildCreate(client); +//bot launch bot.launch() client.login(process.env.DISCORD); \ No newline at end of file diff --git a/events/telegramEvents.js b/events/telegramEvents.js new file mode 100644 index 0000000..8de8e4c --- /dev/null +++ b/events/telegramEvents.js @@ -0,0 +1,245 @@ +const fs = require('fs'); + +const { getJoke } = require('../libs/dadJokes'); +const { rtag, r34 } = require('../libs/rule34'); +const { addToLogs, isTrue, getHelp } = require('../libs/botTools'); +const { generateImage, answerQuestion, sendConv, quickAnswer } = require('../libs/openAi'); +const { addUserToDb, incrementQuota, usersInDb, getQuota, addConv, delConv, getConvs, addMessage, getMessages, isNewUser } = require('../libs/mysql'); + +module.exports = { + start : (bot) => { + bot.command('start', ctx => { + bot.telegram.sendMessage(ctx.chat.id, 'hello there! Welcome to my new telegram bot.\nType /help for help.', {}) + console.log("[Telegram] sent the start message to " + ctx.message.from.username); + addToLogs("[Telegram] sent the start message to " + ctx.message.from.username); + }) + }, + + help : (bot) => { + bot.command('help', ctx => { + if (ctx.message.text.slice(+6) != '') { + getHelp(ctx.message.text.slice(+6), ctx, bot); + } else { + fs.readFile('./src/telegram_helps/default.txt', 'utf8', (err, data) => { + if (err) { + console.log(err); + bot.telegram.sendMessage(ctx.chat.id, "Something went wrong", {}); + } else { + bot.telegram.sendMessage(ctx.chat.id, data, {parse_mode: 'Markdown'}); + } + }); + } + }) + }, + + github : (bot) => { + bot.command('github', ctx => { + bot.telegram.sendMessage(ctx.chat.id, 'Link of the Gihhub repository :\n -https://github.com/Ninja-Jambon/chaise_bot', {}) + console.log('--> sent github link') + addToLogs('--> sent github link') + }) + }, + + truce : (bot) => { + bot.command('truce', ctx => { + isTrue(ctx.update.message.reply_to_message.text, ctx, bot) + }) + }, + + chatinfo : (bot) => { + bot.command('chatinfo', ctx => { + console.log('--> sent chat info') + addToLogs('--> sent chat info') + bot.telegram.sendMessage(ctx.chat.id, 'Chat id : ' + ctx.chat.id, {}) + }) + }, + + suggest : (bot) => { + bot.command('suggest', ctx => { + bot.telegram.sendMessage('-1001782224138', 'New suggestion of ' + ctx.message.from.username + " : " + ctx.message.text.slice(+9), {}) + bot.telegram.sendMessage(ctx.chat.id, 'Your suggestion has been sent to the channel t.me/+SrzC81CGyusyODNk', {}) + console.log('--> sent suggestion message to the channel') + addToLogs('--> sent suggestion message to the channel') + }) + }, + + rtag : (bot) => { + bot.command('rtag', ctx => { + rtag(ctx.message.text.slice(+6), ctx, bot) + }) + }, + + r34 : (bot) => { + bot.command('r34', ctx => { + r34(ctx.message.text.slice(+5), ctx, bot) + }) + }, + + dadjoke : (bot) => { + bot.command('dadjoke', ctx => { + getJoke(ctx, bot) + console.log('--> sent a dad joke') + }) + }, + + g : (bot) => { + bot.command('g', ctx => { + generateImage(ctx.message.text.slice(+3)).then((res) => { + console.log('[Telegram] Sent image to : ' + ctx.message.text.slice(+3)); + addToLogs('[Telegram] Sent image to : ' + ctx.message.text.slice(+3)); + bot.telegram.sendPhoto(ctx.chat.id, res.data.data[0].url, {}); + }).catch((err) => { + console.log(err); + addToLogs(err); + bot.telegram.sendMessage(ctx.chat.id, "Something went wrong", {}); + }) + + console.log('[Telegram] Generating image to : ' + ctx.message.text.slice(+3)); + addToLogs('[Telegram] Generating image to : ' + ctx.message.text.slice(+3)); + bot.telegram.sendMessage(ctx.chat.id, "Generating image...", {}); + }) + }, + + q : (bot) => { + bot.command('q', async ctx => { + users = await usersInDb(); + + if (!users.includes(ctx.message.from.id.toString())) { + await addUserToDb(ctx.message.from.id, ctx.message.from.username); + addToLogs('[Telegram] Added user ' + ctx.message.from.username + ' to the database'); + console.log('[Telegram] Added user ' + ctx.message.from.username + ' to the database'); + } + + quota = await getQuota(ctx.message.from.id); + + if (quota >= 200000) { + bot.telegram.sendMessage(ctx.chat.id, "You have reached your quota, please wait untill it reset (every months).", {}); + } else { + answerQuestion(ctx.message.text.slice(+3)).then((res) => { + incrementQuota(ctx.message.from.id, res.data.usage.total_tokens); + console.log('[Telegram] Sent answer to : ' + ctx.message.text.slice(+3)); + addToLogs('[Telegram] Sent answer to : ' + ctx.message.text.slice(+3)); + bot.telegram.sendMessage(ctx.chat.id, res.data.choices[0].message.content, {}); + }).catch((err) => { + console.log(err); + addToLogs(err); + bot.telegram.sendMessage(ctx.chat.id, "Something went wrong", {}); + }) + + console.log('[Telegram] Generating answer to : ' + ctx.message.text.slice(+3)); + addToLogs('[Telegram] Generating answer to : ' + ctx.message.text.slice(+3)); + bot.telegram.sendMessage(ctx.chat.id, 'Generating the answer...', {}); + } + }) + }, + + quota : (bot) => { + bot.command('quota', async ctx => { + users = await usersInDb(); + + if (!users.includes(ctx.message.from.id.toString())) { + await addUserToDb(ctx.message.from.id, ctx.message.from.username); + addToLogs('[Telegram] Added user ' + ctx.message.from.username + ' to the database'); + console.log('[Telegram] Added user ' + ctx.message.from.username + ' to the database'); + } + + quota = await getQuota(ctx.message.from.id); + + bot.telegram.sendMessage(ctx.chat.id, "You have " + (200000 - quota) + " tokens left.", {}); + }) + }, + + lc : (bot) => { + bot.command('lc', async ctx => { + convs = await getConvs(); + + if (convs.length == 0) { + bot.telegram.sendMessage(ctx.chat.id, "No conversation found.", {}); + } else { + message = "Conversations : \n\n" + + convs.forEach(element => { + message += "- " + element + "\n\n" + }); + + bot.telegram.sendMessage(ctx.chat.id, message, {}); + } + }) + }, + + addconv : (bot) => { + bot.command('addconv', async ctx => { + convs = await getConvs(); + + if (convs.includes(ctx.message.text.slice(+9) || ctx.message.text.slice(+9) == "" || ctx.message.text.contains(" "))) { + bot.telegram.sendMessage(ctx.chat.id, "Verify the name of the conversation (it must not contain spaces and must be unique).", {}); + } else { + await addConv(ctx.message.text.slice(+9)); + bot.telegram.sendMessage(ctx.chat.id, "Conversation added.", {}); + } + }) + }, + + delconv : (bot) => { + bot.command('delconv', async ctx => { + convs = await getConvs(); + + if (!convs.includes(ctx.message.text.slice(+9))) { + bot.telegram.sendMessage(ctx.chat.id, "Verify the name of the conversation.", {}); + } else { + await delConv(ctx.message.text.slice(+9)); + bot.telegram.sendMessage(ctx.chat.id, "Conversation deleted.", {}); + } + }) + }, + + displayconv : (bot) => { + bot.command('displayconv', async ctx => { + convs = await getConvs(); + + if (!convs.includes(ctx.message.text.slice(+13))) { + bot.telegram.sendMessage(ctx.chat.id, "Verify the name of the conversation.", {}); + } else { + messages = await getMessages(ctx.message.text.slice(+13), "user"); + + message = "Conversation " + ctx.message.text.slice(+13) + " :\n\n"; + + messages.forEach(element => { + if (element.user == "System") {} + else { + message += element.user + " : " + element.content + "\n\n"; + } + }); + + if (message == "") { + bot.telegram.sendMessage(ctx.chat.id, "No message found.", {}); + } else { + bot.telegram.sendMessage(ctx.chat.id, message, {}); + } + } + }) + }, + + addmsg : (bot) => { + bot.command('addmsg', async ctx => { + convs = await getConvs(); + + if (!convs.includes(ctx.message.text.slice(8, ctx.message.text.indexOf(" - ")))) { + bot.telegram.sendMessage(ctx.chat.id, "Verify the name of the conversation.", {}); + } else { + await addMessage(ctx.message.text.slice(+8, ctx.message.text.indexOf(" - ")),"user" , ctx.message.text.slice(ctx.message.text.indexOf(" - ")+3), ctx.message.from.username); + + console.log(ctx.message.text.slice(8, ctx.message.text.indexOf(" - "))); + + messages = await getMessages(ctx.message.text.slice(8, ctx.message.text.indexOf(" - ")), 'role'); + + sendConv(messages).then((res) => { + bot.telegram.sendMessage(ctx.chat.id, res.data.choices[0].message.content, {}); + }).catch((err) => { + console.log(err); + addToLogs(err); + }) + } + }) + }, +} \ No newline at end of file