Я новичок в Java и пытаюсь создать бот Telegram , который собирает данные от пользователей.Процесс заключается в том, что пользователь отправляет текст и для проверки себя он должен отправить картинку после этого.если он отправит no pic , процесс не будет завершен. но данные будут сохранены в моем классе .я использовал ScheduledThreadPoolExecutor
, чтобы проверить через 5 минут, хранится ли что-то в переменной или нет, если это правда, и бот не получил рис, удаляет сохраненные данные.но это не сработало.Поскольку он проверяет переменную на регулярной основе 5 минут, я хочу, чтобы он проверял переменную с момента, когда пользователь отправил свой текст (данные хранятся в переменной).Кто-нибудь может предложить лучший способ или решение для решения этой проблемы?
мой код выглядит следующим образом:
Основной класс:
public class MainClass {
public static void main(String[] args) {
ApiContextInitializer.init();
TelegramBotsApi telegramBotsApi = new TelegramBotsApi();
try {
telegramBotsApi.registerBot(new StudiumBot());
} catch (TelegramApiException e) {
e.printStackTrace();
}
}
}
Класс бота:
public class XXXBot extends TelegramLongPollingBot {
public static String answer = null;
public static boolean photo_sent= false;
public void onUpdateReceived(Update update) {
if (update.hasPhoto()) {
photo_sent= true;
}
if (update.hasMessage() && update.getMessage().getText().contains("XXXX")) {
answer=update.getMessage().getText();
ThreadPool.poolExecutor();
}
}
}
ThreadPool Class:
public class ThreadPool {
public static void poolExecutor() {
ScheduledThreadPoolExecutor stpe = new ScheduledThreadPoolExecutor(1);
stpe.scheduleAtFixedRate(new VariableRemover(), 0, 10, TimeUnit.MINUTES);
}
}
Класс, который удаляет сохраненные данные:
public class VariableRemover implements Runnable {
public void run(){
if(! XXXBot.photo_sent){
XXXBot.answer= null;
}
}
}