본문 바로가기
프로그래밍/C Sharp

[ C# ] 누겟 라이브러리 없이 텔레그램 메시지 보내기

by jeong-f 2022. 1. 4.
반응형

누겟의 텔레그램 봇은 프레임워크 4.6 이상의 버전을 지원하여, 하위 버전에서는 사용이 불가하여
라이브러리 없이 프로그램 코드로 전송하는 방법을 알고자 프로그램 테스트를 진행 하였습니다.

▼ 텔레그램 설정은 아래의 페이지를 참고 바랍니다.

2021.12.24 - [파이썬/파이썬] - [ 파이썬 ] 텔레그램 봇 만들기

 

[ 파이썬 ] 텔레그램봇 만들기

파이썬 작업을 위한 텔레그램 봇에 대한 설정 및 API 키 확인 방법에 대하여 공유하고자 합니다. 먼저 텔레그램 봇 다운로드 후 가입을 진행해주십시오. https://desktop.telegram.org/ 텔레그램 데스크톱

jeong-f.tistory.com

 

 

앞서 제작한 텔레그램 봇에서 생성된 값을 기준으로 사용될 Http token는 아래와 같습니다.

  • Http token : 5011935411:AAH_HFzc0AzWCANf0ZkRwc72MfEyy0aBBRo
  • 채팅 아이디 : getUpdates를 이용하여 받을 예정임

텔레그램 API 둘러보기

1. 메시지 내용 보기(getUpdates)

https://api.telegram.org/bot<Httptoken>/getUpdates
https://api.telegram.org/bot5011935411:AAH_HFzc0AzWCANf0ZkRwc72MfEyy0aBBRo/getUpdates

{
"ok":true,
"result":[{"update_id":XXXXXX,
"message":{"message_id":3,
"from":{"id":XXXXXX,"is_bot":false,"first_name":"M","language_code":"ko"},
"chat":{"id":XXXXXX,"first_name":"M","type":"private"},"date":1641394436,"text":"test"}
}]
}

2. 메시지 보내기(SendMessage)

https://api.telegram.org/bot <Http token>/sendMessage? chat_id=<chat_id>&text=<메시지>

https://api.telegram.org/bot5011935411:AAH_HFzc0AzWCANf0ZkRwc72MfEyy0aBBRo/sendMessage?chat_id=5093954586&text=테스트

{"ok":true,
"result":
{"message_id":74,
"from":{
"id":5011935411,"is_bot":true,
"first_name":"test_bot",
"username":"test_1112222233334455_bot"},
"chat":{
"id":5093954586,
"first_name":"M","type":"private"},
"date":1641304100,
"text":"\ud14c\uc2a4\ud2b8"}}

C#코드로 전송하기

getUpdates로 chatID를 조회 한 후 SendMessage 로 메시지를 전송하는 클래스를 제작 하였습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
public class telegramBot
    {
        public string token="";
        public string chat_id = "";
 
        // 1. 초기화 /////////////////////////////////////////////////////////////
        public telegramBot()
        {
            //"요청이 중단되었습니다. SSL/TLS 보안 채널을 만들 수 없습니다." 오류 방지
            ServicePointManager.SecurityProtocol = (SecurityProtocolType)768 | (SecurityProtocolType)3072;
        }
 
        // 2. 채팅 ID 받아오기 /////////////////////////////////////////////////////////////
        public bool getUpdates()
        {
            chat_id = "";
 
            string url = string.Format(@"https://api.telegram.org/bot{0}/getUpdates", token);
            WebClient weblient = new WebClient();
 
            try
            {
                string result = weblient.DownloadString(url);
 
 
                if (result.IndexOf("\"ok\":true"> 0)
                {
                    var JsonReult = JObject.Parse(result);

        // 마지막 메시지에서 채팅아이디를 받음
                    chat_id = JsonReult["result"].Last["message"]["chat"]["id"].ToString();
                    return true;
                }
                else
                {
                    MessageBox.Show(result);
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
 
            return false;
        }

        // 3. 메시지 전송 ///////////////////////////////////////////////////////////////////////
        public bool SendMessage(string text)
        {
            string url = string.Format(@"https://api.telegram.org/bot{0}/sendMessage?chat_id={1}&text={2}", token, chat_id, text);
            WebClient weblient = new WebClient();
 
            try
            {
                string result = weblient.DownloadString(url);
 
                if (result.IndexOf("\"ok\":true"> 0)
                {
                    return true;
                }
                else
                {
                    MessageBox.Show(result);
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
 
            return false;
        }
    }
cs
 
 
 

 ▼ 참고용 제작 프로그램 입니다.(VS2008, Newtonsoft.Json.Net20.dll 라이브러리 사용)

token 및 text를 입력하면 텔레그램으로 메시지를 발송합니다.

▼ 소스 코드

WindowsFormsApplication1.zip
6.92MB

 

 

반응형

댓글