¿Cómo cambiar los permisos de un grupo desde nuestro bot de Telegram?

¿Cómo cambiar los permisos de un grupo desde nuestro bot de Telegram?

El 29 de julio del 2019 con el lanzamiento de la Telegram Bot API v4.4 añadieron el método setChatPermissions que nos permite cambiar los permisos de nuestro grupo mediante un bot, este método es bastante útil para automutear un grupo X tiempo impidiendo que los miembros puedan escribir en tu ausencia o evitar que te llenen el grupo de stickers o encuestas.

Antes cuando no existían estos permisos globales de los grupos tenías que crear un bot detectará mensajes/stickers/... para que si el administrador del grupo marcaba que no quería ningún mensaje o mutear a un usuario en especifico X tiempo lo tenias que manejar completamente desde la lógica de programación de vuestro bot.

El uso del método setChatPermissions es muy sencillo, simplemente necesita dos parámetros que son el id del chat y un objeto con todos los permisos del grupo con todas los valores que admite activando o desactivandolos.

⚠️ Importante: El objeto de los permisos tiene que contener todos los permisos disponibles, no admite que solo le mandes menos de 8 permisos. Esto es más un problema de diseño de la API de Bots de Telegram, ya que si no mandas los 8 permisos la API de Bots pone todos los permisos de tu grupo a "False" haciendo que los miembros no puedan hacer nada en el grupo.

En el siguiente ejemplo puedes ver como se cambian los permisos de un grupo haciendo que los usuarios no puedan enviar encuestas, añadir a otros usarios de forma manual al grupo, cambiar la información del grupo y anclar mensajes.

var permissions = {
    can_send_messages: true,
    can_send_media_messages: true,
    can_send_polls: false,
    can_send_other_messages: true,
    can_add_web_page_previews: false,
    can_change_info: false,
    can_invite_users: false,
    can_pin_messages: false
};

bot.setChatPermissions(chat_id, ChatPermissions);

📝 Nota: Recordar meter ese código dentro de algún comando. Ejemplo:

bot.onText(/^\/comando/, function(msg){
// Código ...
});

Pues sobre este tema poco menos nos queda que comentar, tampoco quiero poneros un tocho de texto para algo que poca explicación tiene. Espero que os quedaran claras las dudas sobre el uso de este método y del error que tiene la API de Telegram con el mismo.