OSDN Git Service

荒らしは過ぎました
[simple-tornado-bot/simple-tornado-bot.git] / bot.py
1 # -*- coding: utf-8 -*-
2 """
3 Created on Sat Sep  1 11:18:39 2018
4
5 @author: fuke masasi
6 """
7
8 import tornado.ioloop
9 import tornado.web
10 import tornado.escape
11 import json, os, hmac, base64, hashlib
12 from datetime import datetime
13 from linebot import LineBotApi, WebhookParser, WebhookHandler
14 from linebot.exceptions import InvalidSignatureError
15 from linebot.models import MessageEvent, TextMessage, TextSendMessage
16
17
18 class WebHookHandler(tornado.web.RequestHandler):   
19     def get(self):
20         t = datetime.now().hour
21         if (t >= 9)and(t < 16):
22             self.write(u'仕事中.'+str(t))
23         else:
24             self.write(str(t))
25         
26     def post(self):
27         header = json.load(self.request.headers)
28         body = json.load(self.request.body)
29         hash = hmac.new(header['X-Line-Signature'].encode('utf-8'),
30             body.encode('utf-8'), hashlib.sha256).digest()
31         signature = base64.b64encode(hash)
32         '''
33         try:
34             events = webhook.parse(body, signature)
35         except InvalidSignatureError:
36             raise tornado.web.HTTPError(400)
37             return
38         for event in events:
39             if not isinstance(event, MessageEvent):
40                 continue
41             if not isinstance(event.message, TextMessage):
42                 continue
43             linebot.reply_message(
44                 event.reply_token,
45                 TextSendMessage(text=event.message.text)
46             )
47         '''
48         self.write(header)
49         
50 class DummyHandler(tornado.web.RequestHandler):
51     def get(self):
52         self.write('OK')
53
54 application = tornado.web.Application([(r'/callback',WebHookHandler),(r'/',DummyHandler)])
55
56 if __name__ == '__main__':
57     token = os.environ['Access_Token']
58     ch = os.environ['Channel_Secret']
59     linebot = LineBotApi(token)
60     webhook = WebhookParser(ch)  
61     application.listen(5000)
62     tornado.ioloop.IOLoop.instance().start()