npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@laxeder/wppconnect

v0.0.6

Published

wppconnection version rompot

Downloads

4

Readme

Rompot

Uma API para desenvolvimento de ChatBot multi-plataforma em JavaScript/TypeScript

🛠 Recursos

  • Multi plataformas
    • WhatsApp (baileys)
    • Telegram (Em breve)
  • Automatização de mensagem
  • Criação de comandos
  • Simples uso

🔧 Instalação

Instalando pacote

npm i @rompot/wppconnect

Importando API

// TypeScript
import { WPPConnect } from "@laxeder/wppconnect";
import { Client } from "rompot";

// Javascript
const { WPPConnect } = require("@laxeder/wppconnect");
const { Client } = require("rompot");

WhatsApp

Após iniciar o bot um QR Code será emprimido no terminal, escane-o com seu WhatsApp para gerar uma nova conexão entre seu número e o Client. Essa conexão será guardada em ./path-to-auth, para gerar uma nova delete-o ou se conecte com um novo caminho de sessão.

const client = new Client(new WPPConnect())
client.connect("./path-to-auth");

client.on("qr", (qr) => {
  console.log("Scan QR:" qr)
})

Configurações

type ConnectionConfig = {
  /** * Configuração dos comandos */
  commandConfig?: CommandConfig;
  /** * Desabilita comandos automaticos */
  disableAutoCommand?: boolean;
  /** * Desabilita escrevndo automatico */
  disableAutoTyping?: boolean;
  /** * Desabilita a visualização automatica das mensagem recebidas */
  disableAutoRead?: boolean;
};

const config: ConnectionConfig = {};

client.config = config;

⚙️ Criando comandos

import { Command, Message } from "rompot";

// Cria um comando com o nome hello
// Ao ser executado envia a mensagem "Hello World!"
class HelloCommand extends Command {
  tags: string[] = ["hello"];
  prefix: string = "/";

  public async execute(message: Message) {
    await message.reply(`Hello World!`);
  }
}

class DateCommand extends Command {
  tags: string[] = ["date"];
  prefix: string = "/";

  public async execute(message: Message) {
    await message.reply(`Data: ${new Date()}`);
  }
}

// Listando comandos
const commands = [new HelloCommand(), new DateCommand()];

client.setCommands(commands);

Eventos

Conexão

client.on("open", (open) => {
  console.log("Client conectado!");
});

client.on("close", (close) => {
  console.log("Client desconectado!");
});

client.on("closed", (closed) => {
  console.log("Conexão com o bot encerrada!");
});

client.on("connecting", (conn) => {
  console.log("Conectando bot");
});

client.on("reconnecting", (conn) => {
  console.log("Reconectando bot");
});

Mensagem

client.on("message", (message) => {
  console.log(`Mensagem recebida de ${message.user.name}`);

  if (message.text == "Oi") {
    message.reply("Olá");
  }
});

Usuários

client.on("user", async (update) => {
  if (update.action == "join") {
    await client.send(new Message(update.chat, `@${update.fromUser.id} entrou no grupo.`));
  }

  if (update.action == "leave") {
    await client.send(new Message(update.chat, `@${update.fromUser.id} saiu do grupo...`));
  }

  if (update.action == "add") {
    await client.send(new Message(update.chat, `Membro @${update.fromUser.id} adicionou o @${update.user.id} ao grupo!`));
  }

  if (update.action == "remove") {
    client.send(new Message(update.chat, `Membro @${update.fromUser.id} removeu o @${update.user.id} do grupo.`));
  }

  if (update.action == "promote") {
    client.send(new Message(update.chat, `Membro @${update.fromUser.id} promoveu o @${update.user.id} para admin!`));
  }

  if (update.action == "demote") {
    await client.send(new Message(update.chat, `Membro @${update.fromUser.id} removeu o admin do @${update.user.id}.`));
  }
});

Erro interno

client.on("error", (err: any) => {
  console.error(`Um erro ocorreu: ${err}`);
});

Mensagem

import { Message } from "rompot";

// Chat
const chat = new Chat("id12345");

// Criar mensagem
const msg = new Message(chat, "texto");

// Enviar mensagem
client.send(msg);

// Mencionar usuário
msg.mentions.push("userId");

// Marcar mensagem
msg.mention = message;

// Ativa as funções da mensagen
msg.client = client;

// Responder mensagem
msg.reply(message);

// Visualiza uma mensagem recebida
msg.read();

// Reage a mensagem
msg.addReaction("❤");

// remove a reação de uma mensagem
msg.removeReaction();

Mensagem de mídia

import { ImageMessage, VideoMessage, AudioMessage, FileMessage, StickerMessage, LocationMessage, ContactMessage } from "rompot";

// Criar mensagem com imagem
const imageMessage = new ImageMessage(chat, "texto", Buffer.from(""));

// Criar mensagem com video
const videoMessage = new VideoMessage(chat, "texto", Buffer.from(""));

// Criar mensagem de audio
const audioMessage = new AudioMessage(chat, "texto", Buffer.from(""));

// Criar mensagem de arquivo
const fileMessage = new FileMessage(chat, "texto", Buffer.from(""));

// Criar mensagem de sticker
const stickerMessage = new StickerMessage(chat, Buffer.from(""));

// Criar mensagem de localiação
// Latitude, Longitude
const locationMessage = new LocationMessage(chat, 24.121231, 55.1121221);

// Criar mensagem com contatos
const contactMessage = new ContactMessage(chat, "nome", "userId");

Outros tipos de mensagem

import { ButtonMessage, ListMessage, PollMessage } from "rompot";

// Criando botões
const btnMessage = new ButtonMessage(chat, "texto", "rodapé");
btnMessage.addCall("Call", "1234567890");
btnMessage.addUrl("Link", "https://example.com");
btnMessage.addReply("Texto", "button-id-123");

// Criar lista
const listMessage = new ListMessage(chat, "texto", "botão", "titulo", "rodapé");
const index1 = listMessage.addCategory("Categoria 1");
const index2 = listMessage.addCategory("Categoria 2");

listMessage.addItem(index1, "Item 1");
listMessage.addItem(index1, "Item 2");

listMessage.addItem(index2, "Abc 1");
listMessage.addItem(index2, "Abc 2");

// Criar enquete
const pollMessage = new PollMessage(chat, "Hello World!");

pollMessage.addOption("Hello", "id-hello-123");
pollMessage.addOption("Hey", "id-hey-123");
pollMessage.addOption("Hi", "id-hi-123");

Lendo resposas de ButtonMessage, ListMessage e PollMessage

import { Command, PollUpdateMessage } from "rompot";

class ButtonCommand extends Command {
  tags: string[] = ["cmd-button"];

  public async response(message: Message) {
    await message.reply(`Button Clicked!`);
  }
}

client.addCommand(new ButtonCommand());

client.on("message", async (message: Message) => {
  if (message instanceof PollUpdateMessage) {
    // Não responde caso a votação da enquete foi removida
    if (message.action == "remove") return;
  }

  // Verifica o ID passado na mensagem como opção
  if (message.selected == "button-id-123") {
    const cmd = client.getCommand("cmd-button");

    // Manda a resposta ao comando
    if (cmd) cmd.response(message);
  }
}):

Bot

  • Definir foto de perfil
client.setBotProfile(Buffer.from(""));
  • Obter foto de perfil do bot
client.getBotProfile();
  • Definir nome do bot
client.setBotName("Name");
  • Definir descrição do bot
client.setBotDescription("Description");
  • Obter descrição do bot
client.getBotDescription();

Grupo

Você pode obter o chat em message.chat ou client.getChat("id"), o ID pode ser encontrado em message.chat.id

  • Criar grupo
client.createChat("name");
  • Sair de um grupo
client.leaveChat(chat);
  • Definir imagem do grupo
client.setChatProfile(chat, Buffer.from(""));
  • Obter imagem do grupo
client.getChatProfile(chat);
  • Definir nome do grupo
client.setChatName(chat, "Name chat");
  • Obter nome do grupo
client.getChatName(chat);
  • Definir a descrição do grupo
client.setChatDescription(chat, "Chat description");
  • Obter descrição do grupo
client.getChatDescription(chat);
  • Adicionar membro
    • Você pode encontrar o user em message.user ou em chat.getUser("id"), o ID pode se encontrado em message.user.id
client.addUserInChat(chat, user);
  • Remover membro
client.removeUserInChat(chat, user);
  • Promover membro
client.promoteUserInChat(chat, user);
  • Despromover membro
client.demoteUserInChat(chat, user);

🛠️ Construído com

Esse Software foi construído com:

📄 Licença

Este projeto está sob a licença MIT - veja o arquivo LICENSE para mais detalhes.