1

我正在使用带有 Spring 框架的 JAVA Telegram Bot API,我的 HomeController 中有一个方法,并且我有一个类来处理来自用户的所有传入消息。我在我的春季日志中遇到了这些错误,然后我从电报机器人 API 得到了重复的响应。问题是什么?

  @PostConstruct
    public void initBots() {
        ApiContextInitializer.init();
        TelegramBotsApi botsApi = new TelegramBotsApi();
        BotService botService = new BotService();
        try {
            botsApi.registerBot(botService);
        } catch (TelegramApiException e) {
            e.printStackTrace();
        }
    }

[abrsystem1_bot 电报连接] org.telegram.telegrambots.logging.BotLogger.severe BOTSESSION org.telegram.telegrambots.exceptions.TelegramApiRequestException:获取更新时出错:[409] 冲突:由 org.telegram.telegrambots 上的其他长轮询或 webhook 终止。 org.telegram.telegrambots.updatesreceivers.DefaultBotSession$ReaderThread.getUpdatesFromServer(DefaultBotSession.java:255) 的 org.telegram.telegrambots.updatesreceivers.DefaultBotSession$ReaderThread 的 api.methods.updates.GetUpdates.deserializeResponse(GetUpdates.java:119)。运行(DefaultBotSession.java:186)

@Override
public void onUpdateReceived(Update update) {
    try {

        if (update.hasMessage() && update.getMessage().hasText()) {

            String message_text = update.getMessage().getText();
            String wellcome_text = "برای ثبت نام در سایت  شماره تلفن همراه خود را به اشتراک بگذارید";

            long chat_id = update.getMessage().getChatId();
            if (message_text.equals("/start")) {

                try {
                    SendMessage message = new SendMessage()
                            .setChatId(chat_id)
                            .setText(wellcome_text);

                    ReplyKeyboardMarkup keyboardMarkup = new ReplyKeyboardMarkup();
                    List<KeyboardRow> keyboard = new ArrayList<KeyboardRow>();
                    KeyboardRow row = new KeyboardRow();
                    row.add((new KeyboardButton().setText("اشتراک شماره موبایل").setRequestContact(true)));
                    keyboard.add(row);
                    keyboardMarkup.setKeyboard(keyboard);
                    message.setReplyMarkup(keyboardMarkup);

                    try {
                        execute(message);
                    } catch (TelegramApiException e) {
                        e.printStackTrace();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }

            } else if (message_text.equals("تایید مشخصات کاربری")) {
                SendMessage sendMessage = new SendMessage();
                sendMessage.setChatId(chat_id).setText("اطلاعات مورد تایید قرار گرفت");

                try {
                    execute(sendMessage);
                    removeMarker(chat_id);
                    showContactInfo(chat_id, update);
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            } else if (message_text.equals("تغییر مشخصات")) {

            } else {
                showUnknownCommand(chat_id);
            }
        } else if (update.getMessage().getContact() != null && update.getMessage().getChat() != null) {

            long chat_id = update.getMessage().getChatId();
            showContactInfo(chat_id, update);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}
4

1 回答 1

1

一天后我终于解决了我的问题!当我在我的计算机上使用 intellij idea 调试我的项目时,我创建了许多调试实例,所以我从电报 bot 中的同一个聊天 id 得到了多个响应。太无聊的问题....

于 2017-10-24T10:21:21.880 回答