본문 바로가기

Java

텔레그램 봇으로 응답 메세지 보내기

Properties prop = new Properties();

 

public void getUpdates() throws Exception{

   // 프로퍼티에 정보들을 담아놓고 호출하기 위함 S
   prop = new Properties();
   String resource="프로퍼티 이름";
   Reader reader = Resources.getResourceAsReader(resource);
   prop.load(reader);
   // 프로퍼티에 정보들을 담아놓고 호출하기 위함 E

 

   String prefixUrl = prop.getProperty("TELEGRAM_URL"); // properties에 선언된 텔레그램의 고정 URL
   String token = prop.getProperty("TELEGRAM_TOKEN"); // properties에 선언된 봇의 토큰값(API Key)

 

 

   // 텔레그램기본 URL과 API키,API주소를 이용하여 봇에게 보낸 채팅들을 json형태로 보여주는 URL 

   url = new URL(prefixUrl+token+"/getUpdates"); 
   br= new BufferedReader(new InputStreamReader(url.openStream()));


   /// 버퍼에 있는 정보를 하나의 문자열로 변환
   while((line=br.readLine())!=null){
        result=result.concat(line);
    }

   JSONParser parser = new JSONParser();
   JSONObject obj = (JSONObject)parser.parse(result);
   JSONArray resultArray = (JSONArray)obj.get("result");

   for(int i=0;i<resultArray.size();i++){
   HashMap rs = (HashMap) resultArray.get(i);
   HashMap messageMap = (HashMap) rs.get("message");

   HashMap chatMap = (HashMap) messageMap.get("chat");
   URLConnection conn = null;

 

   try{
      switch(messageMap.get("text").toString()){

         case "안녕하세요" :{

            url = new URL(prefixUrl+token+"/sendMessage?text=안녕하세요&chat_id="+chatMap.get("id"));
            conn = url.openConnection();
            sendMessage(url,conn);

            break;

         }

         default:{
           url = new URL(prefixUrl+token+"/sendMessage?text=무슨말인지 모르겠어요...&chat_id="+chatMap.get("id"));
           conn = url.openConnection();

           sendMessage(url,conn);   
           break;
         }

      }

   }catch (Exception e) {
      e.printStackTrace();
      log.info("텔레그램 메세지를 처리중 오류 발생");
   }finally{
         br.close();

   }

 

}

 

public void sendMessage(URL url,URLConnection conn){

   BufferedReader br = null;
   InputStream is = null;
   StringBuilder sb = new StringBuilder();

   try{
      is = new BufferedInputStream(conn.getInputStream());
      br = new BufferedReader(new InputStreamReader(is));
 
      String inputLine = "";
      while ((inputLine = br.readLine()) != null) {
          sb.append(inputLine);
      }

      String response = sb.toString();
      br.close();

      }catch(IOException e){
         e.printStackTrace();
         log.info("=====>InputStream 오류");
      }catch(Exception e){
         e.printStackTrace();
      }finally{
         ((HttpURLConnection) conn).disconnect();
      }
 
   }