Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const {
- default: Baileys,
- makeInMemoryStore,
- fetchLatestBaileysVersion,
- useMultiFileAuthState,
- DisconnectReason
- } = require('@whiskeysockets/baileys');
- const { Boom } = require("@hapi/boom");
- const ytdl = require('ytdl-core');
- const prefix = "!";
- async function start() {
- try {
- // Fetch the latest Baileys version and use multi-file auth state
- let { version } = await fetchLatestBaileysVersion();
- let { state, saveCreds } = await useMultiFileAuthState('./session');
- // Create a Baileys connection with specified configurations
- const conn = Baileys({
- auth: state,
- printQRInTerminal: true
- });
- // Listen for 'creds.update' event and save credentials
- conn.ev.on("creds.update", saveCreds);
- // Listen for 'connection.update' event and handle connection updates
- conn.ev.on("connection.update", async (update) => {
- const { lastDisconnect, connection } = update;
- // Log connection status
- if (connection) {
- console.log(connection === "connecting" ? "Connecting to the WhatsApp bot..." : `Connection: ${connection}`);
- }
- // Handle different connection states
- switch (connection) {
- case "open":
- console.log("Successfully connected to WhatsApp");
- break;
- case "close":
- handleDisconnect(lastDisconnect.error);
- break;
- }
- });
- // Function to handle disconnect reasons
- function handleDisconnect(error) {
- const reason = new Boom(error).output.statusCode;
- // Handle specific disconnect reasons
- switch (reason) {
- case DisconnectReason.badSession:
- console.log("Bad Session File, Please Delete session and Scan Again");
- conn.logout();
- break;
- case DisconnectReason.connectionClosed:
- console.log("Connection closed, reconnecting...");
- start();
- break;
- case DisconnectReason.connectionLost:
- console.log("Connection Lost from Server, reconnecting...");
- start();
- break;
- case DisconnectReason.connectionReplaced:
- console.log("Connection Replaced, Another New Session Opened, Please Close Current Session First");
- conn.logout();
- break;
- case DisconnectReason.loggedOut:
- console.log("Device Logged Out, Please Delete session and Scan Again.");
- conn.logout();
- break;
- case DisconnectReason.restartRequired:
- console.log("Restart Required, Restarting...");
- start();
- break;
- case DisconnectReason.timedOut:
- console.log("Connection TimedOut, Reconnecting...");
- start();
- break;
- default:
- conn.end(`Unknown DisconnectReason: ${reason}|${error}`);
- }
- }
- conn.ev.on("group-participants.update", async (msg) => {
- console.log(msg)
- });
- // Listen for 'messages.upsert' event and call the handler function
- conn.ev.on("messages.upsert", async ({messages, type}) => {
- //console.log(messages[0])
- const noWa = messages[0].key.remoteJid;
- const text = (messages[0]?.message?.extendedTextMessage?.text ??messages[0]?.message?.imageMessage?.caption ?? messages[0]?.message?.videoMessage?.caption ?? messages[0].message?.ephemeralMessage?.message?.extendedTextMessage?.text ?? messages[0].message?.conversation) || "";
- console.log(noWa, text);
- if (!messages[0].key.fromMe && text[0] === prefix){
- let [cmd, ...args] = text.slice(1).split(" ");
- args = args.join(" ");
- if (cmd == "ping"){
- await conn.sendMessage(noWa, {text: "Pong"},{quoted: messages[0] });
- }
- if (cmd == "ytdl"){
- const url = await ytdl.getInfo(args)
- console.log(url.formats[url.formats.length - 1])
- let url_link = url.formats[url.formats.length - 1].url
- await conn.sendMessage(noWa, { video: { url:url_link }, mimetype: 'video/mp4' });
- }
- }
- });
- } catch (error) {
- console.error(error);
- }
- }
- // Start the application by calling the 'start' function
- start();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement