如何从 JAVA 电报机器人中的 keyboardButtonRequestUser 获取 user_shared? [关闭]

问题描述 投票:0回答:0

我正在 java telegrambots 库中创建一个机器人。该机器人是针对男女关系的心理训练。我需要bot的当前用户能够推荐或添加他的男朋友或伴侣,即能够同时向bot添加两个用户,并且当前用户必须推荐bot添加另一个用户,这是我现在试图在官方电报文档中找到的功能。在我看来,我找到了两个合适的方法 KeyboardButtonRequestUserKeyboardButtonRequestChat,但我不知道如何将第二个用户连接到机器人并获取有关它的数据。 据我理解,KeyboardButtonRequestChat和KeyboardButtonRequestUser的数据被传给了UserShared对象,它可以包含两个字段——request_id、user_id和request_id、chat_id,也就是我们可以拉出这个chat_id和user_id。那么如何在 JAVA 中做到这一点?

看这个archive with the project,那里实现了两种方法中的一种,但不完全。 下载完整项目

 @SneakyThrows
private void sendMessage(long chatId, String textToSend) {
    SendMessage message = new SendMessage();
    message.setChatId(String.valueOf(chatId));
    message.setText(textToSend);

    KeyboardButtonRequestUser keyboardButtonRequestUser = KeyboardButtonRequestUser
            .builder()
            .requestId("12345")
            .build();

    KeyboardButton keyboardButton = KeyboardButton.builder()
            .text("keyboardButtonRequestUser")
            .requestUser(keyboardButtonRequestUser)
            .build();


    ReplyKeyboardMarkup keyboardMarkup = new ReplyKeyboardMarkup();
    keyboardMarkup.setResizeKeyboard(true);
    keyboardMarkup.setOneTimeKeyboard(true);

    List<KeyboardRow> keyboardRows = new ArrayList<>();

    KeyboardRow row = new KeyboardRow();

    row.add(keyboardButton);
    row.add("keyboardButtonRequestChat");

    keyboardRows.add(row);

    keyboardMarkup.setKeyboard(keyboardRows);

    message.setReplyMarkup(keyboardMarkup);


    try {
        var getChatSh = execute(message).getChatShared();
        System.out.println(getChatSh);

    } catch (TelegramApiException e) {
        throw new TelegramApiException(e);
    }
}

enter image description here

java telegram telegram-bot
© www.soinside.com 2019 - 2024. All rights reserved.