Skip to content

Commit

Permalink
feat: new upgrades in docs and commands
Browse files Browse the repository at this point in the history
  • Loading branch information
guiireal committed Oct 5, 2024
1 parent 7ae7c2b commit 40523ba
Show file tree
Hide file tree
Showing 23 changed files with 327 additions and 66 deletions.
11 changes: 7 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,24 @@
# 🤖 Sky Bot

<div align="center">
<img src="./assets/images/sky-bot.jpeg" width="300">
<img src="./assets/images/sky-bot.png" width="300">
</div>

<br />

<div align="center">
<a href="https://github.com/Projetos-Crescer/zig-app">
<img alt="Version" src="https://img.shields.io/badge/Vers%C3%A3o-1.4.1-blue">
<img alt="Version" src="https://img.shields.io/badge/Vers%C3%A3o-1.5.0-blue">
</a>
</div>

<br />

Bot de WhatsApp multi funções, desenvolvido no vídeo:
## Bot de WhatsApp multi funções, desenvolvido no vídeo:

[CRIANDO UM BOT DE WHATSAPP DO ZERO (GUIA DEFINITIVO) - BASE COMPLETA + 6 COMANDOS - JAVASCRIPT](https://youtu.be/6zr2NYIYIyc)

![](./assets/images/logger.png)

## Tecnologias envolvidas

Expand Down Expand Up @@ -70,7 +71,7 @@ npm start

## Alguns comandos necessitam de API

Edite a linha `21` do arquivo `./src/config.js` e cole sua api key da plataforma Spider X API.<br/>
Edite a linha `34` do arquivo `./src/config.js` e cole sua api key da plataforma Spider X API.<br/>
Para obter seu token, acesse: [https://api.spiderx.com.br](https://api.spiderx.com.br) e crie sua conta gratuitamente!

```js
Expand All @@ -83,13 +84,15 @@ exports.SPIDER_API_TOKEN = "seu_token_aqui";
| Desligar o bot no grupo | Dono | ❌
| Ligar o bot no grupo | Dono | ❌
| Banir membros | Admin | ❌
| Ligar/desligar auto responder | Admin | ❌
| Ligar/desligar boas vindas | Admin | ❌
| Busca CEP | Membro | ❌
| Figurinha de texto animada | Membro | ❌
| Geração de imagens com IA | Membro | ❌
| GPT | Membro | ✅
| Ping | Membro | ❌
| Play áudio | Membro | ✅
| Play vídeo | Membro | ✅
| Sticker | Membro | ❌
| Sticker para imagem | Membro | ❌

Expand Down
Binary file added assets/images/logger.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed assets/images/sky-bot.jpeg
Binary file not shown.
Binary file added assets/images/sky-bot.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 2 additions & 1 deletion database/.gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
*.json
*.json
!auto-responder.json
14 changes: 14 additions & 0 deletions database/auto-responder.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[
{
"match": "Oi",
"answer": "Olá, tudo bem?"
},
{
"match": "Tudo bem",
"answer": "Estou bem, obrigado por perguntar"
},
{
"match": "Qual seu nome",
"answer": "Meu nome é Sky Bot"
}
]
2 changes: 1 addition & 1 deletion node_modules/.package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "sky-bot",
"version": "1.4.1",
"version": "1.5.0",
"description": "Um bot de WhatsApp multi funções.",
"main": "./src/index.js",
"scripts": {
Expand Down
79 changes: 60 additions & 19 deletions src/commands/_sample.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
* Pasta member: Comandos que podem ser executados por qualquer membro do grupo
*
* Funções e variáveis que podem ser extraídas do handle em "handle: async ({ aqui })"
* Cuidado, respeite letras maiúsculas e minúsculas!
*
* Variáveis:
*
Expand All @@ -27,25 +28,65 @@
*
* Funções:
*
* downloadImage => Download de imagem
* downloadSticker => Download de sticker
* downloadVideo => Download de vídeo
* sendAudioFromURL => Enviar áudio de uma URL
* sendErrorReact => Enviar reação de erro
* sendErrorReply => Enviar mensagem de erro como resposta
* sendImageFromFile => Enviar imagem de um arquivo
* sendImageFromURL => Enviar imagem de uma URL
* sendReact => Enviar reação
* sendReply => Enviar mensagem de resposta
* sendStickerFromFile => Enviar sticker de um arquivo
* sendStickerFromURL => Enviar sticker de uma URL
* sendSuccessReact => Enviar reação de sucesso
* sendSuccessReply => Enviar mensagem de sucesso como resposta
* sendText => Enviar mensagem de texto
* sendWaitReact => Enviar reação de espera
* sendWaitReply => Enviar mensagem de espera como resposta
* sendWarningReact => Enviar reação de aviso
* sendWarningReply => Enviar mensagem de aviso como resposta
* downloadImage()
* => Download de imagem
*
* downloadSticker()
* => Download de sticker
*
* downloadVideo()
* => Download de vídeo
*
* sendAudioFromURL("https://teste.com/audio.mp3")
* => Enviar áudio de uma URL
*
* sendErrorReact()
* => Enviar reação de erro
*
* sendErrorReply("texto")
* => Enviar mensagem de erro como resposta
*
* sendImageFromFile("./path/to/image.png")
* => Enviar imagem de um arquivo
*
* sendImageFromURL("https://teste.com/imagem.png")
* => Enviar imagem de uma URL
*
* sendReact("emoji")
* => Enviar reação
*
* sendReply("texto")
* => Enviar mensagem de resposta
*
* sendStickerFromFile("./path/to/sticker.webp")
* => Enviar sticker de um arquivo
*
* sendStickerFromURL("https://teste.com/sticker.webp")
* => Enviar sticker de uma URL
*
* sendSuccessReact()
* => Enviar reação de sucesso
*
* sendSuccessReply()
* => Enviar mensagem de sucesso como resposta
*
* sendText("texto")
* => Enviar mensagem de texto
*
* sendVideoFromURL("https://teste.com/video.mp4")
* => Enviar vídeo de uma URL
*
* sendWaitReact()
* => Enviar reação de espera
*
* sendWaitReply()
* => Enviar mensagem de espera como resposta
*
* sendWarningReact()
* => Enviar reação de aviso
*
* sendWarningReply("texto")
* => Enviar mensagem de aviso como resposta
*/
const { PREFIX } = require("../../config");

Expand Down
41 changes: 41 additions & 0 deletions src/commands/admin/auto-responder.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
const { PREFIX } = require("../../config");
const { InvalidParameterError } = require("../../errors/InvalidParameterError");
const {
activateAutoResponderGroup,
deactivateAutoResponderGroup,
} = require("../../utils/database");

module.exports = {
name: "auto-responder",
description: "Ativo/desativo o recurso de auto-responder no grupo.",
commands: ["auto-responder"],
usage: `${PREFIX}auto-responder (1/0)`,
handle: async ({ args, sendReply, sendSuccessReact, remoteJid }) => {
if (!args.length) {
throw new InvalidParameterError(
"Você precisa digitar 1 ou 0 (ligar ou desligar)!"
);
}

const autoResponder = args[0] === "1";
const notAutoResponder = args[0] === "0";

if (!autoResponder && !notAutoResponder) {
throw new InvalidParameterError(
"Você precisa digitar 1 ou 0 (ligar ou desligar)!"
);
}

if (autoResponder) {
activateAutoResponderGroup(remoteJid);
} else {
deactivateAutoResponderGroup(remoteJid);
}

await sendSuccessReact();

const context = autoResponder ? "ativado" : "desativado";

await sendReply(`Recurso de auto-responder ${context} com sucesso!`);
},
};
8 changes: 6 additions & 2 deletions src/commands/member/image.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,12 @@ module.exports = {

const response = await herc.drawImage({
model: "simurg",
prompt: fullArgs,
negative_prompt: "",
prompt: `Generate a realistic image,
without deviating from the proposed theme below (attention, it may come in Portuguese,
translate it into English first):
${fullArgs}`,
negative_prompt: "nude, explicit, adult, nsfw",
});

await sendSuccessReact();
Expand Down
2 changes: 1 addition & 1 deletion src/commands/member/menu.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ module.exports = {
usage: `${PREFIX}menu`,
handle: async ({ sendImageFromFile }) => {
await sendImageFromFile(
path.join(ASSETS_DIR, "images", "sky-bot.jpeg"),
path.join(ASSETS_DIR, "images", "sky-bot.png"),
`\n\n${menuMessage()}`
);
},
Expand Down
41 changes: 41 additions & 0 deletions src/commands/member/play-video.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
const { PREFIX } = require("../../config");
const { playAudio, playVideo } = require("../../services/spider-x-api");
const { InvalidParameterError } = require("../../errors/InvalidParameterError");

module.exports = {
name: "play-video",
description: "Faço o download de vídeos",
commands: ["play-video", "pv"],
usage: `${PREFIX}play-video MC Hariel`,
handle: async ({
sendVideoFromURL,
args,
sendWaitReact,
sendSuccessReact,
sendErrorReply,
}) => {
if (!args.length) {
throw new InvalidParameterError(
"Você precisa me dizer o que deseja buscar!"
);
}

await sendWaitReact();

try {
const data = await playVideo(args[0]);

if (!data) {
await sendErrorReply("Nenhum resultado encontrado!");
return;
}

await sendSuccessReact();

await sendVideoFromURL(data.url);
} catch (error) {
console.log(error);
await sendErrorReply(JSON.stringify(error.message));
}
},
};
8 changes: 4 additions & 4 deletions src/config.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const path = require("path");

// Prefixo dos comandos
exports.PREFIX = "/";
exports.PREFIX = "#";

// Emoji do bot (mude se preferir)
exports.BOT_EMOJI = "🤖";
Expand All @@ -25,13 +25,13 @@ exports.ASSETS_DIR = path.resolve(__dirname, "..", "assets");
exports.TEMP_DIR = path.resolve(__dirname, "..", "assets", "temp");

// Timeout em milissegundos por evento (evita banimento)
exports.TIMEOUT_IN_MILLISECONDS_BY_EVENT = 700;
exports.TIMEOUT_IN_MILLISECONDS_BY_EVENT = 300;

// Plataforma de API's
exports.SPIDER_API_BASE_URL = "https://api.spiderx.com.br/api";

// Obtenha seu token, criando uma conta em: https://api.spiderx.com.br
exports.SPIDER_API_TOKEN = "seu_token_aqui";

// Permita o sistema registrar os logs
exports.REGISTER_LOGS = true;
// Caso queira responder apenas um grupo específico, coloque o ID dele aqui (ex: [email protected]). Apenas para testes internos!
exports.ONLY_GROUP_ID = "[email protected]";
4 changes: 2 additions & 2 deletions src/connection.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ const {
warningLog,
infoLog,
errorLog,
primaryLog,
sayLog,
successLog,
} = require("./utils/logger");

Expand Down Expand Up @@ -52,7 +52,7 @@ async function connect() {

const code = await socket.requestPairingCode(onlyNumbers(phoneNumber));

primaryLog(`Código de pareamento: ${code}`);
sayLog(`Código de pareamento: ${code}`);
}

socket.ev.on("connection.update", async (update) => {
Expand Down
18 changes: 18 additions & 0 deletions src/services/spider-x-api.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,24 @@ exports.playAudio = async (search) => {
return data;
};

exports.playVideo = async (search) => {
if (!search) {
throw new Error("Você precisa informar o que deseja buscar!");
}

if (!SPIDER_API_TOKEN || SPIDER_API_TOKEN === "seu_token_aqui") {
throw new Error("Token da API do Spider X não configurado");
}

const { data } = await axios.get(
`${SPIDER_API_BASE_URL}/downloads/play-video?search=${encodeURIComponent(
search
)}&api_key=${SPIDER_API_TOKEN}`
);

return data;
};

exports.gpt = async (text) => {
if (!text) {
throw new Error("Você precisa informar o parâmetro de texto!");
Expand Down
Loading

0 comments on commit 40523ba

Please sign in to comment.