bot_genshin
Version:
Bot para Genshim Impact
465 lines (424 loc) • 21.4 kB
JavaScript
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);
});