Restringir uso de comandos en supergrupos y chat privado de tu bot de Telegram
En este artículo, te enseñaremos como restringir los comandos en función de si se usan en un supergrupo o en privado, ya que es un poco extraño que comandos que en teoría serían para supergrupos, funcionen también en privado.
Para ello, haremos uso de una propiedad de msg.chat
llamada type
permitiéndonos distinguir si es un supergrupo, grupo normal, canal o en privado con el bot.
Índice
Restringiendo comando en supergrupos
Para restringir el uso de los comandos en supergrupos, debemos añadir en cada comando que tengamos previamente programados la siguiente condición:
bot.onText(/^\/start/, function(msg){
var chatId = msg.chat.id;
var chatType = msg.chat.type;
if (chatType == 'supergroup'){
bot.sendMessage(chatId, "Hago algo si estoy en un supergrupo");
} else {
// Sino no hago nada
return;
}
});
Con esto, hemos hecho que si un usuario hace uso del comando /start
en un supergrupo le responda "Hago algo si estoy en un supergrupo"
mientras que si es cualquier otro tipo, ya sea privado o un grupo normal, no realizará ninguna acción.
Restringiendo comando en privado con el bot
Ahora, restringiremos el comando para que solo pueda ser utilizado en privado devolviendonos un mensaje, mientras que si se hace uso en un supergrupo, no hará nada.
bot.onText(/^\/start/, function(msg){
var chatId = msg.chat.id;
var chatType = msg.chat.type;
if (chatType == 'supergroup'){
// No hago nada
return;
}
else if (chatType == 'private'){
bot.sendMessage(chatId, "Identifico que me hablan en privado y envío este mensaje")
}
});
Hemos establecido que si el usuario hace uso de /start
en un supergrupo, no hará nada, mientras que si se le escribe el comando en privado, devolverá un mensaje determinado.
Resultado final
Como resultado final, haremos que el bot, dependiendo de donde se le haga uso del comando /start
, devuelva un mensaje determinado de la siguiente manera:
bot.onText(/^\/start/, function(msg){
var chatId = msg.chat.id;
var chatType = msg.chat.type;
if (chatType == 'private'){
// Haz algo =>
bot.sendMessage(chatId, "Devuelvo este mensaje en privado")
}
else if (chatType == 'supergroup'){
// Haz algo =>
bot.sendMessage(chatId, "Devuelvo este mensaje en supergrupos");
}
else if (chatType == 'group'){
// Haz algo =>
bot.sendMessage(chatId, "Devuelvo este mensaje en grupos normales")
}
else if (chatType == 'channel'){
// No hago nada
return;
}
});
If
lo utilizamos para comprobar que, si el tipo de chat es igual a un supergrupo
envía un mensaje que previamente hemos establecido.
Else if
lo utilizamos como segunda opción en el caso de que el If anterior, no cumpla la condición. Es decir, sino si el tipo de chat es igual a privado
que envíe otro mensaje o el bot no realice ninguna acción.