UNPKG

bot_genshin

Version:
465 lines (424 loc) 21.4 kB
const fs = require('fs'); const { Client, Location, MessageMedia, List, Buttons} = require('./index'); const SESSION_FILE_PATH = './session.json'; let sessionCfg; if (fs.existsSync(SESSION_FILE_PATH)) { sessionCfg = require(SESSION_FILE_PATH); } const messages = ["Vai incomodar outra pessoa, obrigado." ,"Não sei, mas eu sei que eu moro lá no Cambuci." ,"Do jeito que eu vejo, sim." ,"Hmmmm... 🤔" ,"Não posso falar sobre isso." ,"Não." ,"Sim." ,"Eu responderia, mas não quero ferir seus sentimentos." ,"Provavelmente sim" ,"Provavelmente não" ,"Minhas fontes dizem que sim" ,"Minhas fontes dizem que não" ,"Você pode acreditar nisso" ,"Minha resposta é não" ,"Minha resposta é sim" ,"Do jeito que eu vejo, não." ,"Melhor não falar isto para você agora..." ,"Sim, com certeza!" ,"Também queria saber..." ,"A minha resposta não importa, o que importa é você seguir o seu coração. 😘" ,"Talvez..." ,"Acho que sim." ,"Acho que não." ,"Talvez sim." ,"Talvez não." ,"Sim!" ,"Não!" ,"¯\\_(ツ)_/¯"] const randomMessage = messages[Math.floor(Math.random() * messages.length)]; const personagensdeanime = ["Qiqi " , "Xinyan " , "Barbara " , "Amber " , "Lisa " , "Keqing " , "Yanfei " , "Klee " , "Mona " , "Ningguang " , "Eula " , "Fischl " , "Noelle " , "Hu Tao " , "Rosaria " , "Jean " , "Beidou " , "Xiangling " , "Ganyu " , "Sucrose " , "Lumine"] const randomMessage1 = personagensdeanime[Math.floor(Math.random() * personagensdeanime.length)]; const client = new Client({ puppeteer: { headless: true }, session: sessionCfg }); client.initialize(); client.on('qr', (qr) => { // NOTE: This event will not be fired if a session is specified. console.log('QR RECEIVED', qr); }); client.on('authenticated', (session) => { console.log('AUTHENTICATED', session); sessionCfg=session; fs.writeFile(SESSION_FILE_PATH, JSON.stringify(session), function (err) { if (err) { console.error(err); } }); }); client.on('auth_failure', msg => { // Fired if session restore was unsuccessfull console.error('FALHA NA AUTENTICAÇÃO', msg); }); client.on('ready', () => { console.log('PRONTO'); }); client.on('message', async msg => { console.log('MENSAGEM RECEBIDA', msg); if (msg.body === 'Bot') { // Send a new message as a reply to the current one msg.reply('Olá o que vc deseja?'); } else if (msg.body.match('bot')) { //ação msg.reply('Olá o que vc deseja?'); } else if (msg.body.match('stickers')) { //ação const webpImage = MessageMedia.fromFilePath('image.webp'); const jpgImage = MessageMedia.fromFilePath('image.jpg'); client.sendMessage(msg.from, webpImage, {sendMediaAsSticker: true}); client.sendMessage(msg.from, jpgImage, {sendMediaAsSticker: true}); } else if (msg.body.match('Bot,')) { const randomMessage = messages[Math.floor(Math.random() * messages.length)]; client.sendMessage(msg.from, randomMessage); } else if (msg.body.match('@')) { const randomMessage1 = personagensdeanime[Math.floor(Math.random() * personagensdeanime.length)]; client.sendMessage(msg.from, `A sua personagem é: ${randomMessage1}`); } else if (msg.body === 'Build') { let sections = [{title:'Builds de personagens',rows:[{title:'Build Diluc'},{title:'Build Qiqi'},{title:'Build Xiao'},{title:'Build Bennet'},{title:'Build Klee'},{title:'Build Venti'}]}]; let list = new List('Lista de Builds de personagens','Selecione o personagem',sections,'Builds','footer'); client.sendMessage(msg.from, list); } else if (msg.body === 'Regras') { // Send a new message to the same chat client.sendMessage(msg.from, 'Você pode usar o bot para algumas brincadeiras como:\n' + '\n' + '==========================\n' + ' *Conselhos do Bot* \n' + '==========================\n' + 'Faça uma pergunta que tenha uma resposta de sim ou não e o bot vai te aconselhar. Digite "Bot," e em seguida a sua pergunta.\n' + '\n' + 'Exemplo: \n' + '\n' + '"Bot, Naruto é melhor que Dragon Ball?"\n' + '\n' + '==========================\n' + ' *Qual personagem de anime?*\n' + '==========================\n' + ' Pergunte ao bot Qual personagem de anime vai fazer tal coisa.\n' + '\n' + 'Exemplo: \n' + '\n' + '"Qual personagem de anime eu irei me Casar?"\n' + '"Qual personagem de anime vai me bater?"\n' + '\n' + '==========================\n' + ' *Jogo da Letra*\n' + '==========================\n' + 'Digite " Jogo da Letra " e seja o mais rápido para falar animes e personagens que comecem com a letra que o bot vai mandar.\n' + '\n' + 'Você também pode digitar " Jogo da Letra modo Sequencial " para um desafio melhor.\n' + '\n' + '==========================\n' + ' *Sola ou não Sola?*\n' + '==========================\n' + 'Digite esse comando e você vai jogar uma disputa de poder. Quem será que vai ter o maior poder de Luta?\n' + '\n' + '==========================\n' + ' *Qual personagem eu sou?*\n' + '==========================\n' + 'Digite " : " mais o seu nome para personagens masculinos ou " + " para personagens femininos. \n' + '\n' + 'Exemplo: :Fernando / +Carina\n' + '\n' + 'O bot vai dizer qual personagem você é. Os protagonistas e personagens mais famosos são bem difíceis de tirar. Será que você terá sorte?\n' + '\n' + '______________\n' + 'Obs: Por favor não tentem mandar a mesma pergunta mais de uma vez afim de ter resultado diferente. Além de estragar a brincadeira, você poderá ser banido.\n' + '\n' + 'DIVIRTAM-SE! 🥰'); } else if (msg.body === 'Build Diluc') { //ação const media = MessageMedia.fromFilePath('Diluc.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build do Diluc' }); } else if (msg.body === 'Build Childe') { //ação const media = MessageMedia.fromFilePath('Childe.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build do Childe' }); } else if (msg.body === 'Build Bennett') { //ação const media = MessageMedia.fromFilePath('Bennett.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build do Bennett' }); } else if (msg.body === 'Build Qiqi') { //ação const media = MessageMedia.fromFilePath('Qiqi.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build da Qiqi' }); } else if (msg.body === 'Build Venti') { //ação const media = MessageMedia.fromFilePath('Venti.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build do Venti' }); } else if (msg.body === 'Build Klee') { //ação const media = MessageMedia.fromFilePath('Klee.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build da Klee' }); } else if (msg.body === 'Build Xingqiu') { //ação const media = MessageMedia.fromFilePath('Xingqiu.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build do Xingqiu' }); } else if (msg.body === 'Build Mona') { //ação const media = MessageMedia.fromFilePath('Mona.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build da Mona' }); } else if (msg.body === 'Build Albedo') { //ação const media = MessageMedia.fromFilePath('Albedo.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build do Albedo' }); } else if (msg.body === 'Build Ganyu') { //ação const media = MessageMedia.fromFilePath('Ganyu.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build da Ganyu' }); } else if (msg.body === 'Build Ningguang') { //ação const media = MessageMedia.fromFilePath('Ningguang.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build da Ningguang' }); } else if (msg.body === 'Build Fischl') { //ação const media = MessageMedia.fromFilePath('Fischl.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build da Fischl' }); } else if (msg.body === 'Build Jean') { //ação const media = MessageMedia.fromFilePath('Jean.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build da Jean' }); } else if (msg.body === 'Build Keqing') { //ação const media = MessageMedia.fromFilePath('Keqing.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build da Keqing' }); } else if (msg.body === 'Build Diona') { //ação const media = MessageMedia.fromFilePath('Diona.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build da Diona' }); } else if (msg.body === 'Build Jean') { //ação const media = MessageMedia.fromFilePath('Jean.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build da Jean' }); } else if (msg.body === 'Build Zhongli') { //ação const media = MessageMedia.fromFilePath('Zhongli.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build do Zhongli' }); } else if (msg.body === 'Build Xiangling') { //ação const media = MessageMedia.fromFilePath('Xiangling.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build da Xiangling' }); } else if (msg.body === 'Build Beidou') { //ação const media = MessageMedia.fromFilePath('Beidou.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build da Beidou' }); } else if (msg.body === 'Build Sucrose') { //ação const media = MessageMedia.fromFilePath('Sucrose.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build da Sucrose' }); } else if (msg.body === 'Build Chongyun') { //ação const media = MessageMedia.fromFilePath('Chongyun.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build do Chongyun' }); } else if (msg.body === 'Build Xinyan') { //ação const media = MessageMedia.fromFilePath('Xinyan.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build da Xinyan' }); } else if (msg.body === 'Build Barbara') { //ação const media = MessageMedia.fromFilePath('Barbara.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build da Barbara' }); } else if (msg.body === 'Build Noelle') { //ação const media = MessageMedia.fromFilePath('Noelle.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build da Noelle' }); } else if (msg.body === 'Build Kaeya') { //ação const media = MessageMedia.fromFilePath('Kaeya.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build do Kaeya' }); } else if (msg.body === 'Build Lisa') { //ação const media = MessageMedia.fromFilePath('Lisa.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build da Lisa' }); } else if (msg.body === 'Build Traveler Geo') { //ação const media = MessageMedia.fromFilePath('Traveler Geo.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build do Traveler Geo' }); } else if (msg.body === 'Build Traveler Anemo') { //ação const media = MessageMedia.fromFilePath('Traveler Anemo.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build do Traveler Anemo' }); } else if (msg.body === 'Build Amber') { //ação const media = MessageMedia.fromFilePath('Amber.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build da Amber' }); } else if (msg.body === 'Build Xiao') { //ação const media = MessageMedia.fromFilePath('Xiao.png'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Aqui está a Build do Xiao' }); } if (msg.body === 'Video teste') { //ação const media = MessageMedia.fromFilePath('DarkStatus.mp4'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Video teste' }); } if (msg.body === 'Gif Teste') { //ação const media = MessageMedia.fromFilePath('lv_0_20210510045840.webm'); client.sendMessage('5511988719181-1613766548@g.us', media, { caption: 'Gif teste' }); } else if (msg.body.startsWith('!echo ')) { // Replies with the same message msg.reply(msg.body.slice(6)); } else if (msg.body.startsWith('!desc ')) { // Change the group description let chat = await msg.getChat(); if (chat.isGroup) { let newDescription = msg.body.slice(6); chat.setDescription(newDescription); } else { msg.reply('This command can only be used in a group!'); } } else if (msg.body === '!leave') { // Leave the group let chat = await msg.getChat(); if (chat.isGroup) { chat.leave(); } else { msg.reply('This command can only be used in a group!'); } } else if (msg.body.startsWith('!join ')) { const inviteCode = msg.body.split(' ')[1]; try { await client.acceptInvite(inviteCode); msg.reply('Joined the group!'); } catch (e) { msg.reply('That invite code seems to be invalid.'); } } else if (msg.body === '!groupinfo') { let chat = await msg.getChat(); if (chat.isGroup) { msg.reply(` *Group Details* Name: ${chat.name} Description: ${chat.description} Created At: ${chat.createdAt.toString()} Created By: ${chat.owner.user} Participant count: ${chat.participants.length} `); } else { msg.reply('This command can only be used in a group!'); } } else if (msg.body === '!chats') { const chats = await client.getChats(); client.sendMessage(msg.from, `The bot has ${chats.length} chats open.`); } else if (msg.body === '!info') { let info = client.info; client.sendMessage(msg.from, ` *Connection info* User name: ${info.pushname} My number: ${info.me.user} Platform: ${info.platform} WhatsApp version: ${info.phone.wa_version} `); } else if (msg.body === '!mediainfo' && msg.hasMedia) { const attachmentData = await msg.downloadMedia(); msg.reply(` *Media info* MimeType: ${attachmentData.mimetype} Filename: ${attachmentData.filename} Data (length): ${attachmentData.data.length} `); } else if (msg.body === '!quoteinfo' && msg.hasQuotedMsg) { const quotedMsg = await msg.getQuotedMessage(); quotedMsg.reply(` ID: ${quotedMsg.id._serialized} Type: ${quotedMsg.type} Author: ${quotedMsg.author || quotedMsg.from} Timestamp: ${quotedMsg.timestamp} Has Media? ${quotedMsg.hasMedia} `); } else if (msg.body === '!resendmedia' && msg.hasQuotedMsg) { const quotedMsg = await msg.getQuotedMessage(); if (quotedMsg.hasMedia) { const attachmentData = await quotedMsg.downloadMedia(); client.sendMessage(msg.from, attachmentData, { caption: 'Here\'s your requested media.' }); } } else if (msg.body === '!location') { msg.reply(new Location(37.422, -122.084, 'Googleplex\nGoogle Headquarters')); } else if (msg.location) { msg.reply(msg.location); } else if (msg.body.startsWith('!status ')) { const newStatus = msg.body.split(' ')[1]; await client.setStatus(newStatus); msg.reply(`Status was updated to *${newStatus}*`); } else if (msg.body === '!mention') { const contact = await msg.getContact(); const chat = await msg.getChat(); chat.sendMessage(`Hi @${contact.number}!`, { mentions: [contact] }); } else if (msg.body === '!delete') { if (msg.hasQuotedMsg) { const quotedMsg = await msg.getQuotedMessage(); if (quotedMsg.fromMe) { quotedMsg.delete(true); } else { msg.reply('I can only delete my own messages'); } } } else if (msg.body === '!pin') { const chat = await msg.getChat(); await chat.pin(); } else if (msg.body === '!archive') { const chat = await msg.getChat(); await chat.archive(); } else if (msg.body === '!mute') { const chat = await msg.getChat(); // mute the chat for 20 seconds const unmuteDate = new Date(); unmuteDate.setSeconds(unmuteDate.getSeconds() + 20); await chat.mute(unmuteDate); } else if (msg.body === '!typing') { const chat = await msg.getChat(); // simulates typing in the chat chat.sendStateTyping(); } else if (msg.body === '!recording') { const chat = await msg.getChat(); // simulates recording audio in the chat chat.sendStateRecording(); } else if (msg.body === '!clearstate') { const chat = await msg.getChat(); // stops typing or recording in the chat chat.clearState(); } else if (msg.body === 'jumpto') { if (msg.hasQuotedMsg) { const quotedMsg = await msg.getQuotedMessage(); client.interface.openChatWindowAt(quotedMsg.id._serialized); } } else if (msg.body === '!buttons') { let button = new Buttons('Escolha um Campeão que você deseja saber a build',[{body:'Build Diluc'},{body:'Build Childe'},{body:'Build Bennett'}],'title','Builds de Genshin'); client.sendMessage(msg.from, button); } else if (msg.body === '!list') { let sections = [{title:'sectionTitle',rows:[{title:'ListItem1', description: 'desc'},{title:'ListItem2'}]}]; let list = new List('List body','btnText',sections,'Title','footer'); client.sendMessage(msg.from, list); } }); client.on('message_create', (msg) => { // Fired on all message creations, including your own if (msg.fromMe) { // do stuff here } }); client.on('message_revoke_everyone', async (after, before) => { // Fired whenever a message is deleted by anyone (including you) console.log(after); // message after it was deleted. if (before) { console.log(before); // message before it was deleted. } }); client.on('message_revoke_me', async (msg) => { // Fired whenever a message is only deleted in your own view. console.log(msg.body); // message before it was deleted. }); client.on('message_ack', (msg, ack) => { /* == ACK VALUES == ACK_ERROR: -1 ACK_PENDING: 0 ACK_SERVER: 1 ACK_DEVICE: 2 ACK_READ: 3 ACK_PLAYED: 4 */ if(ack == 3) { // The message was read } }); client.on('group_join', (notification) => { // User has joined or been added to the group. console.log('join', notification); notification.reply('User joined.'); }); client.on('group_leave', (notification) => { // User has left or been kicked from the group. console.log('leave', notification); notification.reply('User left.'); }); client.on('group_update', (notification) => { // Group picture, subject or description has been updated. console.log('update', notification); }); client.on('change_battery', (batteryInfo) => { // Battery percentage for attached device has changed const { battery, plugged } = batteryInfo; console.log(`Bateria: ${battery}% - Carregando? ${plugged}`); }); client.on('disconnected', (reason) => { console.log('Client was logged out', reason); });