728x90
반응형
토이프로젝트 - 텔레그램 리마인더 봇 만들기 - 등록 기능 추가
리마인더를 등록하는 기능을 개발하였습니다.
명령어는 /add를 접두어로 시작하고, 양식은 아래와 같습니다.
/add (ID) (시간) (등록메시지)
/add 테스트ID 12:00 12시에 약먹자
위와 같이 등록할 수 있도록 개발하였습니다.
전체 코드는 깃헙을 확인해주시고 핵심 코드만 설명하겠습니다.
@Getter
@ToString
public class Reminder {
private final String chatId;
private final String id;
private final String msg;
private final LocalTime reqTime;
// 생성자
public Reminder(String chatId, String messageText) {
try {
String[] info = messageText.split(" ");
if (info.length < 4) { // >> /add ID 23:59 MSG
throw new ProcessException(Message.ADD_EXCEPTION, chatId);
}
this.chatId = chatId;
this.id = info[1];
this.msg = concatMsg(info);
this.reqTime = LocalTime.parse(info[2], DateTimeFormatter.ofPattern("H:mm"));
} catch (DateTimeException de) {
throw new ProcessException(Message.TIME_EXCEPTION, chatId);
}
}
/**
* 등록메시지 연결 메서드
*
* @param info
*/
private String concatMsg(String[] info) {
StringBuilder sb = new StringBuilder();
for (int i = 3; i < info.length; i++) {
sb.append(info[i]).append(" ");
}
return sb.deleteCharAt(sb.length() - 1).toString();
}
}
위는 리마인더의 정보를 담는 클래스입니다.
사용자가 보낸 정보를 바탕으로 해당 클래스의 인스턴스가 생성됩니다.
생성된 인스턴스는 리마인더를 등록하고, 관리하는 책임을 가진 인스턴스에서 활용됩니다.
@Service
public class Tasks {
private Tasks() {}
private final static List<Reminder> TASK_LIST = new ArrayList<>();
/**
* reminder 등록
*
* @param reminder
* @return
*/
public String addReminder(Reminder reminder) {
if (idDuplicateCheck(reminder)) {
throw new ProcessException(Message.DUPLICATE_ID, reminder.getChatId());
}
TASK_LIST.add(reminder);
return Message.ADD_SUCCESS;
}
/**
* 같은 id 사용 검사
*
* @param reminder
* @return
*/
private boolean idDuplicateCheck(Reminder reminder) {
boolean isDuplicate = false;
for (Reminder target : TASK_LIST) {
if (reminder.getChatId().equals(target.getChatId()) && reminder.getId().equals(target.getId())) {
isDuplicate = true;
break;
}
}
return isDuplicate;
}
}
위 클래스가 위에서 말한 리마인더를 등록하고, 관리하는 책임을 가진 클래스입니다.
@Service를 통해 스프링 빈으로 생성하였고, 생성자를 private으로 지정하여 싱글톤 즉 다른 곳에서 해당 인스턴스를 생성하지 못하도록 제한하였습니다.
static final 변수로 리마인더를 담는 List를 생성하였습니다. 해당 List에 사용자가 등록한 리마인더들이 등록됩니다.
간단한 등록 메서드와 필요한 유효성 검사들을 추가하였습니다.
테스트 코드 및 예외처리 등 전체 코드는 아래 주소를 참고해주시기 바랍니다.
https://github.com/SanghooMoon/telegram-reminder-bot/pull/3/files
728x90
반응형
'토이프로젝트 > 텔레그램 리마인더 봇' 카테고리의 다른 글
[JAVA/텔레그램봇] 5. 리마인더 봇 개발하기 - 리마인더 확인 기능 추가 (0) | 2022.10.10 |
---|---|
[JAVA/텔레그램봇] 3. 리마인더 봇 개발하기 - 명령어(Command) 사용하기 (1) | 2022.10.03 |
[JAVA/텔레그램봇] 2. 리마인더 봇 개발하기 - 메아리 기능 (1) | 2022.10.03 |
[JAVA/텔레그램봇] 1. 리마인더 봇 개발하기 - 기초 환경 세팅 (0) | 2022.10.03 |
[JAVA/텔레그램봇] 0. 리마인더 봇 개발하기 (0) | 2022.10.03 |
댓글