OSDN Git Service

delete files
[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, pytz, pymongo
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         pz = pytz.timezone('Asia/Tokyo')
21         now = datetime.now(pz)
22         t = now.hour
23         w = now.weekday()
24         if (w < 5)and(t >= 9)and(t < 16):
25             obj = {'type':'text','text':u'仕事中'}
26             j = json.dump(obj, ensure_ascii=False)
27             self.write(j)
28             return
29         db = pymongo.MongoClient(uri)[ac]
30         table = db['glove']
31         if table.find().count() == 0: 
32             table.insert_one({u'リフレフィット':'SF'})
33         self.write(str(t))
34         
35     def post(self):
36         header = json.load(self.request.headers)
37         body = json.load(self.request.body)
38         hash = hmac.new(header['X-Line-Signature'].encode('utf-8'),
39             body.encode('utf-8'), hashlib.sha256).digest()
40         signature = base64.b64encode(hash)
41         '''
42         try:
43             events = webhook.parse(body, signature)
44         except InvalidSignatureError:
45             raise tornado.web.HTTPError(400)
46             return
47         for event in events:
48             if not isinstance(event, MessageEvent):
49                 continue
50             if not isinstance(event.message, TextMessage):
51                 continue
52             linebot.reply_message(
53                 event.reply_token,
54                 TextSendMessage(text=event.message.text)
55             )
56         '''
57         self.write(header)
58         
59 class DummyHandler(tornado.web.RequestHandler):
60     def get(self):
61         self.write('OK')
62
63 application = tornado.web.Application([(r'/callback',WebHookHandler),(r'/',DummyHandler)])
64
65 if __name__ == '__main__':
66     token = os.environ['Access_Token']
67     ch = os.environ['Channel_Secret']
68     uri = os.environ['MONGODB_URI']
69     ac = os.environ['ACCOUNT']
70     linebot = LineBotApi(token)
71     webhook = WebhookParser(ch)  
72     application.listen(5000)
73     tornado.ioloop.IOLoop.instance().start()