Webhook을 사용하여 Telegram Bot를 만드는 방법
자신만의 텔레그램 봇을 만들기 위해서는 최소한의 코딩이 필요하다.사실, 당신은 코드 편집기를 설치하지 않아도 된다.이 게시물이 완성되면 Google 스프레드시트만으로 개인 대화형 텔레그램봇을 만드는 방법을 배우게 될 것이다.최종 제품은 당신의 메시지에 회신할 수 있는 봇이 될 것이다.이와 비슷한 것:
내가 단계별 지시를 내리기 전에, 네가 봇이 어떻게 작동하는지 개념적으로 이해하는 것이 중요해.이를 위해 웹후크 개념을 터치하고 텔레그램봇의 API 문서를 자주 참고할 예정이다.
Nota bene:이 게시물은 텔레그램 봇에 대한 3점 자습서의 일부분이다(두 번째 부분은여기에그리고 세번째 부분은 여전히 오븐에 있다)
웹 후크에 대한 빠른 소개
앱이 서로 통합되는 두 가지 방법이 있는데, 바로 폴링과 웹 후크를 통해서입니다.당신이 온라인 구매를 하고 당신의 신용카드 앱으로부터 메시지를 받을 때, 그것은 실행 중인 앱 통합이다.당신이 앱에서 돈을 송금하고 당신의 OTP에 대한 SMS를 받을 때, 그것은 실행 중인 앱 통합이다.개발자들은 (1) 그것은 꽤 멋지고 (2) 많은 사용자들이 원하는 것이기 때문에 그들의 앱들이 서로 데이터를 가져올 수 있는 방법을 만든다.이 때문에 개발자들은 자사 앱이 다른 앱에서 데이터를 주고받을 수 있는 방법에 대한 지침을 작성한다.하지만 물론, 그들은 모든 데이터를 가져오는 데 사용할 수 있게 하는 것이 아니라, 어떤 유형의 데이터를 보내도 괜찮은지, 그리고 다른 앱에서 데이터를 받을 때 그들의 앱이 무엇을 할 수 있는지를 명시한다.텔레그램에 대해서는, 그 지침이 여기에 쓰여 있다.
낚싯바늘을 낚시바늘처럼 하는 웨빙 후크
앱 통합을 낚시로 생각하라.그것은 단지 이번에만 신선한 물고기를 잡으려고 하는 것과 같다. 당신의 앱은 다른 앱에서 새로운 데이터를 얻으려고 한다.이제 여러분이 물고기를 잡을 수 있는 두 가지 방법이 있다. 하나는 여러분이 물고기를 잡았는지 확인하기 위해 그물을 물 위에 던져서 매 정해진 기간마다 그것을 확인하는 것이고, 두 가지는 갈고리에 지렁이를 걸고 물에서 움직이는 물고기의 당김이 느껴질 때까지 기다리는 것이다.API 폴링과 웹 후크는 각각 이렇게 작동한다.API 폴링으로 앱은 정해진 기간마다 다른 앱에서 체크인하여 웹 후크를 사용하는 동안 데이터를 가져올 수 있는지 확인하고, 앱은 데이터가 전송되기를 기다린다.이 데이터 전송은 이벤트에 의해 트리거된다.
잠깐, 무슨 행사야?
이벤트는 앱에서 인간이 유발하는 동작이다.예를 들어 카트에 추가를 클릭하거나 누군가에게 메시지를 보내거나 특정 웹 페이지로 이동하는 것은 모두 인간이 트리거한 이벤트다.이들 사건에는 자료가 첨부되어 있다.예를 들어, 카트에 항목을 배치할 때 타임스탬프, 항목 및 가격은 해당 이벤트에서 생성되는 데이터의 일부일 가능성이 높다.텔레그램에서, 당신이 봇에게 메시지를 보낼 때, 타임 스탬프, 당신의 사용자 ID, 당신의 메시지 ID, 그리고 당신의 메시지는 모두 생성되는 데이터의 일부분이다.
요구 사항:
웹 후크를 사용하여 봇을 만들려면 다음 두 가지가 필요하다.
- 진입권 - 다른 앱의 데이터에 액세스만 할 수는 없다.개발자들은 누가 그들의 앱에 접속하고 있는지 뒷문으로 추적할 방법이 필요하다.이를 위해 주 사용자 인터페이스 밖에서 자신의 앱에 들어가기를 원하는 누구에게나 고유한 키를 나눠준다.잠시 후에 텔레그램에서 열쇠를 얻는 방법을 알려줄게.
- 로딩 도크 - 일단 다른 앱에 접속하면, 이제 그 앱에서 데이터를 가져오기 시작할 수 있다.그러나 그러기 위해서는 그 자료를 받을 수 있는 적재함이나 장소가 있어야 한다.우리의 적재함은 웹 앱 URL의 형태로 되어야 한다. 우리가 적재함이 없다면 앱은 우리에게 어떤 데이터도 언로드할 수 없다.저 부두에서, 우리는 데이터를 가지고 우리가 원하는 모든 것을 할 수 있다.우리는 그것을 검사하거나 조작하거나 다른 앱으로 배송하거나 심지어 소스 앱으로 돌려보낼 수도 있다.
여기 웹 후크가 어떻게 작동하는지 보여주는 항구의 이미지가 있다.먼저 크레인이 배에서 컨테이너를 들어 올려 적재함에 주차한다.거기서 항구를 조종하는 자는 컨테이너를 다시 들어 다른 배에 싣는 것을 선택할 수 있다.이제 크레인이 웹 후크이고 두 배가 서로 다른 두 개의 앱인 반면 로딩 도크가 웹앱 URL이라고 상상해보자.웹 후크는 앱 1에서 데이터를 가져와 웹앱 URL로 전송한다.거기서, 당신은 앱 2로 데이터를 보내거나 당신이 원하는 것을 할 수 있다.그 컨테이너는 이제 열거나 검사하거나 배송할 수 있다.
BOT 만들기
이제 웹 후크가 어떻게 작동하는지 개념적으로 이해하셨으니, 이제 봇을 만들 수 있을 겁니다!다음과 같은 6가지 단계가 있다.
1단계: 입장권 획득
우선, 입국 허가증이 필요해비상업적 앱에서 이것은 개발자로부터 수동으로 요청해야 할 수 있는 것이지만 감사하게도, 텔레그램에서 이러한 엔트리 키나 승인 토큰을 얻는 매우 쉬운 방법이 있다.봇아버지한테 물어봐!
인증 토큰을 받으려면 다음 단계를 따르십시오.
- 텔레그램에서 봇아버지를 찾아라.@@botfather. /@botfather.
- 봇아버지께 안부 전해줘(조의를 구함)
- 봇 이름을 그의 이름으로 보내라.
- 쾅! 당신은 당신의 승인 토큰을 가지고 있다.
2단계: Google 스프레드시트 설정
토큰이 확보되면 빈 구글 스프레드시트를 들고 툴 > 스크립트 편집기로 이동하십시오.여기가 우리가 코드를 쓸 곳이다.
3단계: 로딩 도크 만들기(웹앱 URL)
우리는 텔레그램으로부터 자료를 받기 위해 웹앱 url이 필요하다.고맙게도, 구글은 Script Editor를 통해 웹 앱을 게시할 수 있는 매우 쉬운 방법을 제공한다.우리가 스크립트를 발행할 때, 우리는 독특한 웹앱 URL을 얻을 것이다.따라서 Google 스프레드시트의 스크립트 편집기에 게시를 누르십시오.아래 이미지에서 드롭다운 옵션을 기록해 두십시오.작품을 발표할 때마다 버전은 항상 새 것으로 설정되어야 하고, 당신의 이메일은 앱을 실행하는 사람이어야 하며, 누구든지 익명일지라도 그것에 접근할 수 있어야 한다.
그리고 이제 우리는 웹앱 url을 가지게 되었다!😃
4단계: 변수에 모든 링크 저장
이제 출입증과 적재함이 생겼으니, 웹 훅을 만들어 봅시다.텔레그램 봇 API 설명서에 따르면 API(App Programming Interface)에 대한 모든 쿼리는 다음과 같은 형식으로 제시되어야 한다.https://api.telegram.org/bot/METHOD_NAME우리 코드에 이 링크가 너무 자주 필요할 것 같아.나중에 쉽게 참조할 수 있도록 필요한 모든 링크를 변수에 저장해 두자.
5단계: 웹 후크 설정
웹 훅을 설정하기 위해서는 보트파더에서 받은 토큰을 사용하여 텔레그램에서 데이터를 가져올 수 있는 기능을 작성해 보자.이 데이터는 우리의 웹앱 URL로 직접 전송되어야 한다.아래 코드를 복사하여 붙여넣고, 다 쓰면 출판을 누를 수 있다.
코드를 게시하거나 배포할 때 Google의 데이터에 액세스할 수 있도록 자신의 앱을 승인하라는 메시지가 표시될 수 있음:
계속 사용 권한을 검토하고 승인하면 안전으로 돌아가기에는 수명이 너무 짧다.
6단계: 메시징 설정
우리의 봇이 누군가에게 메시지를 보내기 전에 알아야 할 두 가지가 있다.
- 누구에게 전할 것인가?채팅 아이디를 줘야 돼.
- 뭐라고 해야 하지?우리는 그것을 전할 메시지를 전달해야 한다.
이러한 요구 사항을 우리의 기능에 대한 매개 변수로 쓰자.이 코드를 복사하여 붙여넣으십시오.
7단계: POST 요청 설정
텔레그램의 개발자들에 따르면, API에 대한 모든 쿼리는 HTTPS 요청을 통해 제공되어야 한다.그들은 또한 GET와 POST 요청만 지원한다고 언급했다.GET 요청은 누군가가 데이터를 검색하려고 하는 반면 POST 요청은 누군가가 데이터를 전송하려고 하는 것을 의미한다.내가 아직 익히지 못한 것 같은 이 튜토리얼의 컨셉은 이것뿐이니까 내가 무슨 말을 하는지 아는 척 그만하고 내가 더 잘 이해할 수 있도록 도와준 이 글과 너를 연결시켜 주겠다.
누구든, 알아야 할 중요한 것은 사람이 당신의 봇에게 말할 때마다 메시지를 보낼 수 있도록 텔레그램에 POST 요청을 보낼 수 있는 기능을 써야 한다는 것이다.이 코드를 복사하여 붙여넣으십시오. 잠시 후 코드를 복사하여 붙여넣으십시오.
(1) 이것은 텔레그램으로 데이터를 전송하는 우리의 방식이고 (2) 구글 자체는 우리가 웹 앱을 발행할 때 그것의 앱 스크립트 사용자(우리)에게 doGet 또는 doPost 기능을 포함하도록 요구하기 때문에 우리는 이 기능이 필요하다.여기에 그것에 대한 서면 문서가 있다.구글은 이 문서에서 함수의 (e) 주장이 무엇을 의미하는지 설명하기도 했다.그것은 우리의 웹 후크가 연결된 앱 안에서 인간이 생성한 이벤트로부터 생성된 데이터를 나타낸다.우리의 사용 사례에서, 이 e 주장은 인간이 텔레그램 봇에 메시지를 보낼 때마다 생성되는 모든 데이터를 포함할 것이다.그리고 거기서 우리는 사용자의 채팅 아이디를 얻을 것이다.마침내, 아까의 모든 횡설수설들이 paid ..(아마도?) 결실을 맺었다.
여기 우리의 봇에 대한 이야기가 있다.
- 사용자가 우리의 텔레그램 봇과 채팅할 때, 그것은 이벤트다.그리고 그 사건은 e로 표현된 데이터를 생성한다.
- 우리의 웹 후크는 e를 웹앱 url로 자동 전송한다.
- e가 Webapp URL에 도착하면, Webapp은 Telegram에 POST 요청을 보내기를 원할 것이다.그것은 사용자에게 메시지를 다시 보내도록 텔레그램에 요청할 것이다.
- 다만 요구조건이 불완전한 요청은 보낼 수 없다.우리는 텔레그램에 메시지를 보내길 원하는 사람의 채팅 아이디와 텔레그램이 보내주길 원하는 메시지가 필요하다.doPost 기능은 변수 텍스트 내부에 메시지를 전달한다.
- doPost 기능도 채팅 ID를 전달하지만, 먼저 데이터를 찾기 위해 구문 분석해야 한다.
- 일단 위치가 정해지면, 이제 sendMessage 기능이 있는 텔레그램에 두 가지 요건을 모두 통과시킬 것이다.그리고 그것은 사용자에게 다시 보내질 메시지를 촉발할 것이다.우! 요청 완료.이제 작업용 봇을 갖게 되었다.
도중에 길을 잃었을 경우를 대비해서…
전체 코드:
유튜브 동영상도 있다.
다음 내용:
- 2부 — 텔레그램 메시지를 Google 스프레드시트 셀에 바로 저장하는 방법. 나는 데모용으로 트리비아 봇을 만들었다.
- 3부 — 텔레그램 봇에 인라인 키보드 버튼을 만드는 방법.나의 원격 팀은 직접 이것을 사용하여 출석률, 실적 및 인센티브를 추적해 왔다.아직 완전한 튜토리얼을 쓰려는 의지가 강하지만, 그 동안, 당신은 1년 전에 내가 쓴 이 기사를 탐구할 수 있다.
음조를 유지하다.
추신. 텔레그램 인라인 키보드에 관한 기초 자습서 덕분에 Wim에게 감사한다.추가 자원은 Wim's Coding Tutorial에서 확인할 수 있다.
텔레그램으로 자신만의 트리비아 봇 만들기
이 튜토리얼에서는 우리만의 트리비아 봇을 만들 것이다!질문과 답변은 구글 스프레드시트에 저장될 것이고 우리는 우리의 프로그램을 스크립트 편집기에 쓸 것이다.우리는 텔레그램에 접속하기 위해 웹 후크를 사용할 것이다.만약 네가 이것을 어떻게 해야 할지 모르더라도 걱정하지 마. 내가 여기에 7단계 튜토리얼을 썼어.
우리는 단순히 메시지를 보내는 것으로 트라이비아 봇을 촉발시킬 것이다.우리의 봇은 그 메시지가 정답인지 평가할 것이다.그렇다면 다음 질문을 보내고, 그렇지 않으면 현재의 질문을 반복한다.최종 제품:
필요한 사항:
웹 후크에 익숙하시거나 이전 튜토리얼을 읽어보셨다면, 다음 사항이 필요하실 겁니다.
- 텔레그램의 인증 토큰
- 웹 앱 URL
- 그리고 물론 일련의 질문과 대답들.난 레딧에서 내 걸 받았어.
봇 설정 방법:
나는 이전 튜토리얼의 1~6단계를 따라 봇을 설치했다.
우리가 한 일:
∘1단계 : 출입증 또는 인증 토큰 획득
✅ 2단계: 빈 Google 스프레드시트 사용
: : 3 : : 로는 Webapp url 성는 입니다.
∘ 4단계 : 모든 관련 링크를 변수에 저장
✅ 5단계: 웹 후크 설정 기능 생성
✅ 6단계 : 텔레그램으로 메시지 보내기 기능 생성
다음 단계는 우리의 질문과 답변을 시트에 타이핑하는 것이다.
나는 이 시트의 이름을 '트리비아 마스터'라고 지었다.나는 또한 '그것이 알고 싶다'라는 또 다른 빈 시트를 만들었다.만약 사용자가 메시지를 보내고 그것이 정답으로 평가한다면, 나는 봇이 그 메시지를 "그것이 알고 싶다" 시트에 저장하기를 원한다.우리는 우리의 봇이 다음에 어떤 질문을 보낼지 알 수 있도록 정답이 나온 질문의 수를 계속 주시하고 싶다.
다음으로 스프레드시트에서 셀 위치를 매핑하는 것보다 통화 질문과 답변을 쉽게 할 수 있는 기능인 평탄화 기능을 소개하고자 한다.
이 기능은 데이터 범위를 1차원 배열로 바꿀 것이다.예를 들어, A1열에서 질문 목록을 얻기 위해 평탄도를 사용하는 경우:A99:
Logger.log() 기능을 사용하여 검사해 봅시다.여기서 A1열의 질문은 다음과 같다.A99는 이제 1차원 목록으로 바뀌었다.
이건or. 이제 수 이제 우리는 쉽게 접근자에게 지수를 전달함으로써 질문을 할 수 있다. []예를 들어 목록의 첫 번째 질문을 받고 싶으면 다음 단계를 실행하십시오.questions[0]
TriviaMaster의 B열에 대해서도 동일하게 답안 목록을 작성해 봅시다.
나도 먼저 가서 빈 '그것이 알고 싶다' 시트를 변수에 저장했다.나중에 필요할 거야.
흠. 우리 봇을 프로그램할 준비가 거의 다 된 것 같아!그러나 먼저 다음과 같이 검토한다.
검토
내가 앞서 말했듯이, 우리의 봇은 어떤 종류의 메세지에 의해 촉발될 것이다.즉, 사용자가 봇에게 메시지를 보낼 때마다 봇이 답장을 한다.봇의 답장은 사용자의 메시지가 정답과 일치하느냐에 따라 달라진다.정답을 매핑하기 위해 getLastRow 방법을 사용하여 "그것이 알고 싶다" 시트에 적용할 것이다.그것은 우리가 우리의 질문과 대답 리스트에 전달할 지표가 될 것이다.
더 나아가기 전에, 우리가 지금까지 논의한 모든 것을 doPost 기능에 넣자.doPost 기능의 중요성은 이 튜토리얼의 7단계에서 설명된다.이 기능은 우리의 봇이 사용자로부터 내용이나 메시지를 받았을 때 무엇을 할 것인지를 결정할 것이다.이 기능을 사용하여 사용자의 텔레그램 chat_id와 사용자의 실제 문자 메시지를 꺼낼 수 있다.
이제 우리가 필요한 모든 것을 얻었으니, 우리의 봇이 언제 그리고 만약 어떤 사용자로부터 메자를 받는지에 대한 지침을 써보자!
트리비아 봇 논리
봇이 하기를 원하는 것은 다음과 같다.
변수, 내용(문자 메시지, GIF, 사진 등)으로 대표되는 모든 종류의 메시지를 수신할 때 다음을 수행하십시오.
- 해당 내용과 관련된 텍스트 메시지(있는 경우)가 정답과 동일한지 여부를 평가하십시오.정답은 정답[x]으로 표시된다. 다시 말하지만 x는 '그것이 알고 싶다' 탭의 마지막 행이며, 변수 답은 B1 열의 1차원 목록이다.'트리비아 마스터' 탭의 B99.만약 내가 답을 찾으면 B1 셀의 내용이 나올 것이고, 만약 내가 답을 찾으면 B2 셀 등의 내용이 나올 것이다.
- 만약 똑같다면, 나는 봇이 '그것이 알고 싶다' 탭에 그 문자 메시지를 추가했으면 좋겠어.첨부는 시트의 마지막 행에 항목이 추가되는 것을 의미한다.
나는 또한 봇이 사용자에게 메시지를 보내서 그들의 대답이 옳았음을 알려주고 다음 질문(질문[x+1]로 표현되는 대로)을 전달해 주기를 바란다. - 같지 않다면 봇이 사용자에게 메시지를 보내 자신의 답이 틀렸음을 알리고 현재의 질문(질문[x]으로 표현된 바와 같이)으로 다시 시도해야 한다는 것을 알려주고 싶다.
그게 다야!우리는 지금 일하는 트리비아 봇을 가지고 있다!원하는 문답 쌍으로 작성하면 된다.여러분은 그것을 시험 리뷰나 재미로 사용할 수 있답니다!이 봇에 액세스하려면 텔레그램에서 @nerd_alert를 찾으십시오.🤓
도중에 길을 잃었을 경우를 대비해서 여기 암호의 전체 복사본이 있다.
지느러미
추신
만약 당신이 이것을 좋아한다면, 당신은 아마 다음과 같은 것을 즐길 것이다.
다음에는 어떤 봇을 시험해 볼까?
https://medium.com/@mars_escobin/creating-your-own-trivia-bot-on-telegram-d6cc9cddcc7f
'기타제품 및 SW' 카테고리의 다른 글
(2) Google 시트용 API 요청 방법 설정 (0) | 2022.05.19 |
---|---|
(1) Google 시트용 API Connector 추가 기능을 사용하는 방법 : 빠른 시작 (0) | 2022.05.19 |
PS5용 차세대 VR의 명칭은 「PlayStation VR2」 (0) | 2022.01.05 |
최고의 무료 PDF to Word Online 변환기가 여기에 있습니다. (0) | 2022.01.04 |
AetherSX2 베타 출시: Android용 PS2 에뮬레이터 (0) | 2021.12.06 |