我很难理解我在哪里出错了,所以我正在寻找一些额外的眼睛。我正在使用 Telegraf 在 NodeJS 中制作 Telegram 机器人。当新用户登录时,它应该限制他们在回答简单的验证码式问题之前不能发布任何内容。假设他们回答正确,他们应该被授予再次发帖的能力。如果他们回答错误,他们就会被踢出小组。
除了用户在正确回答后被赋予发帖能力的部分之外,一切似乎都融合在一起了。我的理解是对于您想要允许的权限,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);
}
});