Skip to content

Instantly share code, notes, and snippets.

@Tarkiin
Last active April 12, 2025 16:36
Show Gist options
  • Save Tarkiin/4b5b38f51358de64e0befcca0b2af865 to your computer and use it in GitHub Desktop.
Save Tarkiin/4b5b38f51358de64e0befcca0b2af865 to your computer and use it in GitHub Desktop.
silent.js
const { bot, isAdmin, jidToNum } = require("../lib/")
const mutedUsers = new Set()
// Comando para silenciar usuario
bot(
{
pattern: "silent ?(.*)",
fromMe: true,
desc: "Silencia a un usuario y elimina sus mensajes automáticamente",
type: "group",
onlyGroup: true,
},
async (message, match) => {
const participants = await message.groupMetadata(message.jid)
const isImAdmin = await isAdmin(participants, message.client.user.jid)
if (!isImAdmin) return await message.send("_No soy administrador._")
const mentioned = message.mention[0]
if (!mentioned) return await message.send("*¡Debes mencionar a un usuario!*\nEjemplo: .silent @usuario v22")
mutedUsers.add(mentioned)
const userNum = jidToNum(mentioned)
await message.send(
`@${userNum} fue silenciado(a).\nTodos sus mensajes serán eliminados automáticamente.`,
{ mentions: [mentioned] }
)
}
)
// Comando para quitar silencio
bot(
{
pattern: "unsilent ?(.*)",
fromMe: true,
desc: "Quita el silencio a un usuario",
type: "group",
onlyGroup: true,
},
async (message, match) => {
const mentioned = message.mention[0]
if (!mentioned) return await message.send("*¡Debes mencionar a un usuario!*\nEjemplo: .unsilent @usuario")
if (mutedUsers.delete(mentioned)) {
const userNum = jidToNum(mentioned)
await message.send(
`@${userNum} ya no está silenciado.`,
{ mentions: [mentioned] }
)
} else {
await message.send("Este usuario no estaba silenciado.")
}
}
)
// Manejador que elimina mensajes
bot(
{
on: "message",
type: "group",
onlyGroup: true,
},
async (message) => {
if (mutedUsers.has(message.sender)) {
try {
await new Promise(r => setTimeout(r, 1000)) // Pequeño retardo para evitar conflictos
await message.send(message.message.key, {}, "delete")
} catch (error) {
console.error("Error eliminando mensaje:", error)
}
}
}
)
// Comando para listar silenciados
bot(
{
pattern: "silentlist",
fromMe: true,
desc: "Muestra la lista de usuarios silenciados",
type: "group",
onlyGroup: true,
},
async (message) => {
if (mutedUsers.size === 0) {
return await message.send("No hay usuarios silenciados.")
}
const list = [...mutedUsers].map(jidToNum).join("\n")
await message.send(`Usuarios silenciados:\n${list}`)
}
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment