Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

174
Vistas
Telegraf: después de restringir los permisos, mi bot no devolverá las habilidades de publicación

Estoy luchando por entender dónde me he equivocado aquí, así que estoy buscando algunos ojos adicionales. Estoy usando Telegraf para hacer un bot de Telegram en NodeJS. Cuando un nuevo usuario inicia sesión, debería restringir que pueda publicar cualquier cosa hasta que responda una pregunta simple de estilo Captcha. Suponiendo que respondan correctamente, se les debe otorgar la capacidad de publicar nuevamente. Si responde incorrectamente, es expulsado del grupo.

Todo parece encajar, excepto la parte en la que se le devuelve al usuario la capacidad de publicar después de responder correctamente. Tengo entendido que restrictChatMember se puede pasar como "verdadero" para los permisos que desea permitir, pero no funciona. ¿Qué más me estoy perdiendo?

 bot.on('new_chat_members', (ctx) => { newMember = ctx.message.new_chat_members[0].id; newMemberName = ctx.message.new_chat_members[0].first_name; bot.telegram.restrictChatMember(ctx.chat.id, newMember); const keyboard = Keyboard.make([ Key.callback('Answer1', 'Fail'), Key.callback('Answer2', 'Fail'), Key.callback('Answer3', 'Pass'), Key.callback('Answer4', 'Fail'), Key.callback('Answer5', 'Fail'), ]).inline(); bot.telegram.sendMessage(ctx.chat.id, `Hello, ${newMemberName}!\nYou can post once You select Answer3`, keyboard).then( ({ message_id }) => { spamBlocker = message_id; }); }); bot.on("callback_query", function(callbackQuery) { let chatID = callbackQuery.update.callback_query.message.chat.id; if (callbackQuery.update.callback_query.data == "Pass") { bot.telegram.deleteMessage(chatID, spamBlocker); bot.telegram.restrictChatMember(chatID, newMember, [true, true, true, true]); bot.telegram.sendMessage(chatID, `${newMemberName}, ${welcomeMessage}`) } else { bot.telegram.kickChatMember(chatID, newMember); bot.telegram.deleteMessage(chatID, spamBlocker); } });

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Gracias a la ayuda de un amable extraño en CodingHelp Discord, pude llegar a la siguiente solución. El problema es que restrictChatMember toma una ID de chat, una ID de miembro y un objeto. El objeto toma pares de claves (obvio a posteriori), así que le dices "can_send_messages": verdadero, por ejemplo, y continúa con cada línea.

En mi caso, cambie esta línea:

 bot.telegram.restrictChatMember(chatID, newMember, [true, true, true, true]);

a esto:

 bot.telegram.restrictChatMember(chatID, newMember, {"can_send_messages": true, "can_send_media_messages": true, "can_send_other_messages": true, "can_add_web_page_previews": true});
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda