requests 모듈 사용을 위해서 install을 해주어야 한다. -> pip install requests
importrequestsimportos# 환경 변수 PATH에 등록된 TELEGRAM_TOKEN을 가져온다.
token=os.getenv('TELEGRAM_TOKEN')# 업데이트 내용 받아오기
# 아래의 주소를 호출하면, 업데이트 된 봇의 내용을 가져올 수 있다.
url='https://api.telegram.org/bot{}/getUpdates'.format(token)response=json.loads(requests.get(url).text)# json으로 받기
print(response)'''
결과값
{'ok': True, 'result': [{'update_id': 412826971, 'message': {'message_id': 1, 'from': {'id': 748290634, 'is_bot': False, 'first_name': 'Jungjung'}, 'chat': {'id': 748290634, 'first_name': 'Jungjung', 'type': 'private'}, 'date': 1561216164, 'text': '/start', 'entities': [{'offset': 0, 'length': 6, 'type': 'bot_command'}]}}, {'update_id': 412826972, 'message': {'message_id': 2, 'from': {'id': 748290634, 'is_bot': False, 'first_name': 'Jungjung', 'language_code': 'ko'}, 'chat': {'id': 748290634, 'first_name': 'Jungjung', 'type': 'private'}, 'date': 1561216177, 'text': 'Hi !!!!!!!!!'}}]}
'''
[4] Bot에게 받은 메세지 그대로 전송해보기
importrequestsimportos# 환경 변수 PATH에 등록된 TELEGRAM_TOKEN을 가져온다.
token=os.getenv('TELEGRAM_TOKEN')# 업데이트 내용 받아오기
# 아래의 주소를 호출하면, 업데이트 된 봇의 내용을 가져올 수 있다.
url='https://api.telegram.org/bot{}/getUpdates'.format(token)response=json.loads(requests.get(url).text)# json으로 받기
# 아래의 주소를 이용하면 Bot을 통해 메세지를 전송할 수 있다.
url='https://api.telegram.org/bot{}/sendMessage'.format(token)# 나의 chat_id와, msg를 getUpdates 통해 가져온 json데이터를 파싱해서 가져온다.
chat_id=response["result"][-1]["message"]["from"]["id"]msg=response["result"][-1]["message"]["text"]# print(chat_id)
# print(msg)
# sendMessage url을 통해 Bot에게 parameter를 전송한다.
requests.get(url,params={"chat_id":chat_id,"text":msg})
urlpatterns=[...# 업데이트 폼
path('user/updateform',user_views.updateform),# db update
path('user/update',user_views.update),...]
views.py 처리
# 회원정보 수정 폼
defupdateform(request):user=User.objects.get(id=request.session['authUser']['id'])data={'user':user}returnrender(request,'user/updateform.html',data)# 업데이트 처리
defupdate(request):user=User.objects.get(id=request.session['authUser']['id'])user.name=request.POST['name']user.gender=request.POST['gender']ifrequest.POST['password']isnot'':user.password=request.POST['password']user.save()# 수정정보 다시 가져오기
# 세션을 전체 가져오기
# request.session['authUser'] = model_to_dict(user)
# 현재 세션의 데이터만 변경하기
request.session['authUser']['name']=user.namereturnHttpResponseRedirect('/user/updateform?result=success')
urlpatterns=[...# 로그인 폼을 보여주기
path('user/loginform',user_views.loginform),# 로그인 로직(DB에 데이터 추가)
path('user/login',user_views.login),...]
views.py 로그인 세션 로직 처리
# login
defloginform(request):returnrender(request,'user/loginform.html')deflogin(request):# ORM문법을 통해, email과 password가 일치하는 결과 객체를 가져온다.
results=User.objects.filter(email=request.POST['email']).filter(password=request.POST['password'])# 해당하는 데이터가 없으면 -> 로그인 실패
iflen(results)==0:returnHttpResponseRedirect('/user/loginform?result=fail')# 해당하는 데이터가 있다면 -> 세션 등록
authUser=results[0]request.session['authUser']=model_to_dict(authUser)returnHttpResponseRedirect('/')
fromhttp.serverimportBaseHTTPRequestHandler,HTTPServerport=9999classSimpleHTTPRequestHandler(BaseHTTPRequestHandler):defdo_GET(self):self.send_response(200)self.send_header('Content-Type','text/html; charset=utf-8')self.end_headers()self.wfile.write('<h1>안녕하세요</h1>'.encode('utf-8'))httpd=HTTPServer(('0.0.0.0',port),SimpleHTTPRequestHandler)print(f'Server running on port:{port}')httpd.serve_forever()