Telegraf:限制权限后,我的机器人不会再授予发帖能力

Telegraf: After restricting permissions, my bot won't grant posting abilities back

我很难理解我哪里出了问题,所以我正在寻找一些额外的眼睛。我正在使用 Telegraf 在 NodeJS 中制作 Telegram 机器人。当新用户登录时,它应该限制他们在回答一个简单的验证码式问题之前不能 post 任何东西。假设他们回答正确,他们应该再次获得 post 的能力。如果他们回答错误,他们将被踢出群。

除了用户在正确回答后被赋予 post 能力的部分之外,一切似乎都在融合。我的理解是可以将 restrictChatMember 传递为“true”以获取您想要允许的权限,但它不起作用。我还缺少什么?

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);
  }
});

感谢 CodingHelp Discord 上好心的陌生人的帮助,我得以得出以下解决方案。问题是 restrictChatMember 需要一个聊天 ID、一个成员 ID 和一个对象。该对象采用密钥对(事后看来很明显),因此您告诉它“can_send_messages”:例如,true,然后继续每一行。

就我而言,更改此行:

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

对此:

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});