Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

165
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!