thanks to you who make me want to discover and create new things
Fabri115 opened this issue ยท 3 comments
//this is an 'AUDIO' version of lolhuman's openai plugin
import fetch from 'node-fetch'
import gtts from 'node-gtts'
import { readFileSync, unlinkSync } from 'fs'
import { join } from 'path'
const defaultLang = 'it'
let handler = async (m, { text, conn, args, usedPrefix, command }) => {
if (!text) throw 'Inserisci un testo da elaborare.'
await m.reply('Aspetta un attimo...')
let zykomd = await fetch(https://api.lolhuman.xyz/api/openai?apikey=BrunoSobrino_2&text=${text}&user=user-unique-id
)
let hasil = await zykomd.json()
let lang = args[0]
let ttsText = hasil.result
if ((args[0] || '').length !== 2) {
lang = defaultLang
ttsText = hasil.result
}
let res
try {
res = await tts(ttsText, lang)
} catch (e) {
m.reply(e + '')
ttsText = args.join(' ')
if (!ttsText) return
res = await tts(ttsText, defaultLang)
} finally {
if (res) conn.sendFile(m.chat, res, 'tts.opus', null, m, true)
}
}
handler.help = ['tts ']
handler.tags = ['tools']
handler.command = /^ai_voce$/i
export default handler
function tts(text, lang = 'it') {
console.log(lang, text)
return new Promise((resolve, reject) => {
try {
let tts = gtts(lang)
let filePath = join(global.__dirname(import.meta.url), '../tmp', (1 * new Date) + '.wav')
tts.save(filePath, text, () => {
resolve(readFileSync(filePath))
unlinkSync(filePath)
})
} catch (e) {
reject(e)
}
})
}
//momentarily it is set on the Italian language
//I have many questions to ask you and plugins to modify. I kindly ask you to contact me to try to do something together and collaborate :)
@Fabri115
@Fabri115 Thank you for your input and we still appreciate your comment, we will improve the command and add it to MysticBot. Anything we can be of use to can comment on these issues
try this plugin ๐๐ป
*mute user
let handler = async (m, { conn, participants, usedPrefix, command, isAdmin }) => {
let BANtext = chi? tagga qualcuno
if (!m.mentionedJid[0] && !m.quoted) return
let who
if (m.isGroup) who = m.mentionedJid[0] ? m.mentionedJid[0] : m.quoted.sender
else who = m.chat
let users = global.db.data.users
users[who].muto = true
m.reply('Mutato ๐๐จ๐ง ๐ฌ๐ฎ๐๐๐๐ฌ๐ฌ๐จ โ tutti i messaggi inviati ti verranno eliminati. soffri.') }
handler.command = /^muta$/i
handler.admin = true
export default handler
*unmute user
let handler = async (m, { conn, text}) => {
if (!text) return
let who
if (m.isGroup) who = m.mentionedJid[0]
else who = m.chat
if (!who) return
let users = global.db.data.users
users[who].muto = false
conn.reply(m.chat, *smutato* ๐๐จ๐ง ๐ฌ๐ฎ๐๐๐๐ฌ๐ฌ๐จ, โ *non eliminerรฒ piรน i suoi messaggi*
, m)
}
handler.help = ['unbanuser']
handler.tags = ['owner']
handler.command = /^smuta|unmute$/i
handler.admin = true
export default handler
*list muteusers
let handler = async (m, { conn, isAdmin }) => {
let chats = Object.entries(global.db.data.chats).filter(chat => chat[1].ismuto)
let users = Object.entries(global.db.data.users).filter(user => user[1].muto)
let caption = โใ๐๐ญ๐๐ง๐ญ๐ข *mutati* ๐จ๐ปโโ๏ธใ โ ๐๐จ๐ญ๐๐ฅ๐ : ${users.length} ${users ? '\n' + users.map(([jid], i) =>
โ ${isAdmin ? '@' + jid.split@
[0] : jid}.trim()).join('\n') : 'โ'} โโโโโ
.trim()
m.reply(caption, null, {mentions: conn.parseMention(caption)})}
handler.command = /^mutelist(ned)?|mute(ed)?list|mutati?$/i
handler.admin = true
export default handler
- checkativo :)
import { createHash } from 'crypto'
import PhoneNumber from 'awesome-phonenumber'
import { canLevelUp, xpRange } from '../lib/levelling.js'
//import db from '../lib/database.js'
let handler = async (m, { conn, usedPrefix, command}) => {
let who = m.quoted ? m.quoted.sender : m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender
if (!(who in global.db.data.users)) throw *L'utente deve ancora scrivere un msg*
let pp = await conn.profilePictureUrl(who, 'image').catch(_ => './src/avatar_contact.png')
let user = global.db.data.users[who]
let { name, exp, messaggi, lastclaim, registered, regTime, age, level, role, warn } = global.db.data.users[who]
let { min, xp, max } = xpRange(user.level, global.multiplier)
let username = conn.getName(who)
let math = max - xp
let prem = global.prems.includes(who.split@
[0])
let sn = createHash('md5').update(who).digest('hex')
m.reply(*Total Message* : *${user.messaggi}*
)
}
handler.help = ['Checkativo @user']
handler.tags = ['group']
handler.command = /^checkativo$/i
export default handler
*top groups message :)
import { areJidsSameUser } from '@adiwajshing/baileys'
var leaderboards = [
'messaggi'
]
var handler = async (m, {
conn,
args,
participants,
usedPrefix,
command,
groupMetadata
}) => {
var users = Object.entries(db.data.chats).map(([key, value]) => {
return {
...value,
subject: key
}
})
var leaderboard = leaderboards.filter(v => v && users.filter(chats => chats && chats[v]).length)
var type = (args[0] || '').toLowerCase()
var getPage = (item) => Math.ceil((users.filter(chats => chats && chats[item]).length) / 25)
var wrong = `
Use format ${usedPrefix}${command} [type] [page]
example ${usedPrefix}${command} messaggi 1
๐ Type list
${leaderboard.map(v => ${v}
.trim()).join('\n')}
.trim() if (!leaderboard.includes(type)) return m.reply(wrong) var page = isNumber(args[1]) ? Math.min(Math.max(parseInt(args[1]), 0), getPage(type)) : 0 var sortedItem = users.map(toNumber(type)).sort(sort(type)) var userItem = sortedItem.map(enumGetSubject) // var len = args[0] && args[0].length > 0 ? Math.min(100, Math.max(parseInt(args[0]), 5)) : Math.min(5, sortedExp.length) var text =
${sortedItem.slice(page * 5, page * 5 + 5).map((user, i) => ${i + 1}. ${participants.some(p => isJidGroup(user.subject, p.subject)) ?
(${groupMetadata.subject}) : '@'}${user.subject.split
@[0]} *${user[type]} ${type}*
).join\n
}
`.trim()
return m.reply(text, null, {
mentions: [...userItem.slice(page * 5, page * 5 + 5)].filter(v => !participants.some(p => isJidGroup(v, p.id)))
})
}
handler.help = ['leaderboard jumlah user', 'lb jumlah user']
handler.tags = ['xp']
handler.command = /^(gruppi)$/i
export default handler
function sort(property, ascending = true) {
if (property) return (...args) => args[ascending & 1][property] - args[!ascending & 1][property]
else return (...args) => args[ascending & 1] - args[!ascending & 1]
}
function toNumber(property, _default = 0) {
if (property) return (a, i, b) => {
return {
...b[i],
[property]: a[property] === undefined ? _default : a[property]
}
}
else return a => a === undefined ? _default : a
}
function enumGetSubject(a) {
return a.subject
}
/**
- Detect Number
- @param {Number} x
*/
function isNumber(number) {
if (!number) return number
number = parseInt(number)
return typeof number == 'number' && !isNaN(number)
}
*Top users message
import { areJidsSameUser } from '@adiwajshing/baileys'
var leaderboards = [
'messaggi'
]
var handler = async (m, {
conn,
args,
participants,
usedPrefix,
command
}) => {
if (!m.chat) {
}
var groupId = m.chat.id
var users =
Object.entries(db.data.chats[groupId]).map(([key, value]) => {
return {
...value,
Id: key
}
})
var leaderboard = leaderboards.filter(v => v && users.filter(user => user && user[v]).length)
var type = (args[0] || '').toLowerCase()
var getPage = (item) => Math.ceil((users.filter(user => user && user[item]).length) / 25)
var wrong = `
Usa il formato ${usedPrefix}${command} [messaggi]
๐ Tipo di lista:
${leaderboard.map(v => ${v}
.trim()).join('\n')}
.trim() if (!leaderboard.includes(type)) return m.reply(wrong) var page = isNumber(args[1]) ? Math.min(Math.max(parseInt(args[1]), 0), getPage(type)) : 0 var sortedItem = users.map(toNumber(type)).sort(sort(type)) var userItem = sortedItem.map(enumGetKey) // var len = args[0] && args[0].length > 0 ? Math.min(100, Math.max(parseInt(args[0]), 5)) : Math.min(5, sortedExp.length) var text =
โข * Top 50 ${type}* โข
Tu sei: ${userItem.indexOf(m.sender) + 1} of ${userItem.length}
${sortedItem.slice(page * 50, page * 50 + 50).map((user, i) => ${i + 1}. ${participants.some(p => areJidsSameUser(user.jid, p.id)) ?
${conn.getName(user.jid)} wa.me/ : '@'}${user.jid.split
@[0]} *${user[type]} ${type}*
).join\n
}
`.trim()
return m.reply(text, null, {
mentions: [...userItem.slice(page * 50, page * 50 + 50)].filter(v => !participants.some(p => areJidsSameUser(v, p.id)))
})
}
handler.help = ['leaderboard jumlah user', 'lb jumlah user']
handler.tags = ['xp']
handler.command = /^(top)$/i
export default handler
function sort(property, ascending = true) {
if (property) return (...args) => args[ascending & 1][property] - args[!ascending & 1][property]
else return (...args) => args[ascending & 1] - args[!ascending & 1]
}
function toNumber(property, _default = 0) {
if (property) return (a, i, b) => {
return {
...b[i],
[property]: a[property] === undefined ? _default : a[property]
}
}
else return a => a === undefined ? _default : a
}
function enumGetKey(a) {
return a.jid
}
/**
- Detect Number
- @param {Number} x
*/
function isNumber(number) {
if (!number) return number
number = parseInt(number)
return typeof number == 'number' && !isNaN(number)
}
handler modify = ++
...
if (user) {
if (!isNumber(user.messaggi)) user.messaggi = 0
if (!('muto' in user)) user.muto = false
global.db.data.users[m.sender] = {
messaggi: 0,
muto: false,
if (chat) {
if (!isNumber(chat.messaggi)) chat.messaggi = 0
global.db.data.chats[m.chat] = {
messaggi: 0,
let utente = global.db.data.users[m.sender]
if (utente.muto == true) {
let bang = m.key.id
let cance = m.key.participant
await conn.sendMessage(m.chat, {
delete: {
remoteJid: m.chat, fromMe: false, id: bang, participant: cance }
})
}
if (m.sender && (user = global.db.data.users[m.sender]) && (chat = global.db.data.chats[m.chat])) {
user.exp += m.exp
user.limit -= m.limit * 1
user.messaggi +=1
chat.messaggi +=1
user.bestemmie +=1
}
bonus fix wait message problems with plugin
import { readdirSync, statSync, unlinkSync, existsSync, readFileSync, watch, rmSync, promises as fs } from "fs";
import path, { join } from 'path';
let handler = async (m, { conn }, args) => {
let parentw = conn;
let who = m.mentionedJid && m.mentionedJid[0] ? m.mentionedJid[0] : m.fromMe ? conn.user.jid : m.sender;
let uniqid = ${who.split
@[0]}
;
if (global.conn.user.jid !== conn.user.jid) {
return conn.sendMessage(m.chat, { text: 'Utilizza questo comando direttamente sul numero principale del Bot' }, { quoted: m });
} else {
await conn.sendMessage(m.chat, { text: "๐ Bang, Ora mi vedi" }, { quoted: m });
}
try {
const sessionPath = "./BotWhaItaSession/";
const files = await fs.readdir(sessionPath);
for (const file of files) {
await fs.unlink(path.join(sessionPath, file));
}
await conn.sendMessage(m.chat, { text: "Tutti i file della Sessione sono stati eliminati" }, { quoted: m });
} catch (err) {
console.error('La cartella o il file di sessione non esistono', err);
}
};
handler.help = ['deletebot'];
handler.tags = ['jadibot'];
handler.command = /^(deletebot|eliminarsesion|deletesession|ds)$/i;
handler.owner = true;
export default handler;
I hope to become your contributor
idea for new menu with buttons
import os from 'os'
import util from 'util'
import sizeFormatter from 'human-readable'
import MessageType from '@adiwajshing/baileys'
import fs from 'fs'
import { performance } from 'perf_hooks'
let handler = async (m, { conn, usedPrefix, usedPrefix: _p, __dirname, isPrems, groupMetadata }) => {
let pp = imagen4
let img = './Menu2.jpg'
let locale = 'it'
let d = new Date(new Date + 3600000)
let week = d.toLocaleDateString(locale, { weekday: 'long' })
let date = d.toLocaleDateString(locale, { day: 'numeric', month: 'long', year: 'numeric' })
let _uptime = process.uptime() * 1000
let uptime = clockString(_uptime)
let user = global.db.data.users[m.sender]
let { money, joincount } = global.db.data.users[m.sender]
let { exp, limit, level, role } = global.db.data.users[m.sender]
let rtotalreg = Object.values(global.db.data.users).filter(user => user.registered == true).length
let totaluser = Object.values(global.db.data.users).length
const chats = Object.entries(conn.chats).filter(([id, data]) => id && data.isChats)
let more = String.fromCharCode(8206)
let readMore = more.repeat(850)
let taguser = '@' + m.sender.split("@s.whatsapp.net")[0]
var doc = ['pdf','zip','vnd.openxmlformats-officedocument.presentationml.presentation','vnd.openxmlformats-officedocument.spreadsheetml.sheet','vnd.openxmlformats-officedocument.wordprocessingml.document']
var document = doc[Math.floor(Math.random() * doc.length)]
const groupsIn = chats.filter(([id]) => id.endsWith('@g.us'))
const groups = chats.filter(([id]) => id.endsWith('@g.us'))
const used = process.memoryUsage()
const { restrict } = global.db.data.settings[conn.user.jid] || {}
const { autoread } = global.opts
const grup = './no.png'
let name = await
conn.getName(m.sender)
let old = performance.now()
let neww = performance.now()
let speed = neww - old
let prova ={ "key": { "participants":"0@s.whatsapp.net", "remoteJid": "status@broadcast", "fromMe": true, "id": "Halo" }, "message": { "contactMessage": { "vcard": BEGIN:VCARD\nVERSION:3.0\nN:Sy;Bot;;;\nFN:y\nitem1.TEL;waid=${m.sender.split('@')[0]}:${m.sender.split('@')[0]}\nitem1.X-ABLabel:Ponsel\nEND:VCARD
}}, "participant": "0@s.whatsapp.net" }
let text = ` โ๏ธ๐ด๐๐๐๐ช๐๐๐๐
๐โ๐แซ๐|mษnลซโ๏ธ
โโโโขโง๐ถ๐๐๐โงโขโโโโโโ
โโโขโง๐ฟ๐ผ๐๐ผ: ${date}
โโโขโง๐๐๐ผ: ${bottime}
โโโโโ โขโงโงโข โโโโโ
โโโโขโง๐ฐ๐๐๐ ๐ผ๐๐๐๐๐โงโขโโโโโโ
โโโขโง๐ผ๐๐ฌ๐๐๐ฌ: ${name} โง
โโโขโง๐ฎ๐๐๐๐๐:
โ* ${groupMetadata.subject}*
โโโขโง๐๐๐๐๐ผ๐ฎ๐ฎ๐ฐ: ${user.messaggi}
โโโขโง๐๐ผ๐๐ฎ๐: ${role}
โโโโ โขโงโงโข โโโโโ
โโโขโง๐ฉ๐ถ๐ป ๐ฐ๐ต๐ญ๐ถโงโขโโโ
โโโขโง๐ฝ๐๐ ๐๐ผ๐๐:${gt}
โโโขโง๐ฝ๐ฌ๐น๐บ๐ฐ๐ถ๐ต๐ฌ ๐ฝ๐๐:${vs}
โโโขโง๐๐๐ผ๐๐๐๐๐: ๐ณ๐๐๐๐ *
โโโขโง๐๐๐๐๐๐:* ${usedPrefix}
โโโขโง๐๐๐๐๐๐: ${uptime}
โโโขโง๐ฟ๐ผ๐๐ผ๐ฝ๐ผ๐๐: ${rtotalreg} ๐ญ๐น๐ถ๐ด ${totaluser}
โโโขโง๐ผ๐๐ฌ๐๐๐ ๐ป๐ถ๐ป๐จ๐ณ๐: ${totaluser}
โโโ๐ฉ๐ถ๐ป๐พ๐ฏ๐จ๐ฐ๐ป๐จ V${vs}
โโ๐ฑ๐๐๐ ๐๐๐๐ ๐๐
โโโข ๐บ๐๐๐๐๐๐๐๐ ๐ด๐๐๐๐ช๐๐๐๐
๐โ๐แซ๐
โโโข ๐ฌ๐๐๐๐ ๐๐ ๐๊ฎป๊ฎป๐โพ๏ธโ๊ฎป๐ฆ๐๐
โโโข ๐ป๐๐๐๐๐๐๐:
โโโ โ ๊ชถอข๐ดโ๏ธ๊ซ แตแตแถฆแถป ยฒโฐยฒยณ`
const templateButtons = [
{index: 1, quickReplyButton: {displayText: '.menuowner'}},
{index: 2, quickReplyButton: {displayText: '.menuattiva'}},
{index: 3, quickReplyButton: {displayText: '.menugruppo'}},
{index: 4, quickReplyButton: {displayText: '.menuaudio'}},
{index: 5, quickReplyButton: {displayText: '.menumedia'}},
{index: 6, quickReplyButton: {displayText: '.comandi'}},
{index: 7, quickReplyButton: {displayText: '.news'}},
]
let tm = {
text: text,
footer: global.wm,
templateButtons: templateButtons,
image : 'no.png'
}
conn.sendMessage(m.chat,tm, m)
}
handler.help = ['text2']
handler.tags = ['maker']
handler.command = /^menuIos/i
export default handler
function clockString(ms) {
let h = Math.floor(ms / 3600000)
let m = Math.floor(ms / 60000) % 60
let s = Math.floor(ms / 1000) % 60
console.log({ms,h,m,s})
return [h, m, s].map(v => v.toString().padStart(2, 0) ).join(':')}
idea for new menu with buttons