1 # -*- coding: utf-8 -*-
3 Created on Sat Sep 1 11:18:39 2018
11 import json, os, hmac, base64, hashlib, pytz, pymongo, re
12 from datetime import datetime
13 from linebot import LineBotApi, WebhookParser, WebhookHandler
14 from linebot.exceptions import InvalidSignatureError
15 from linebot.models import TextSendMessage
18 class WebHookHandler(tornado.web.RequestHandler):
20 self.write(self.main('2'))
23 pz = pytz.timezone('Asia/Tokyo')
24 now = datetime.now(pz)
27 if (w < 5)and(t >= 9)and(t < 16):
28 obj = {'type':'text','text':u'仕事中'}
29 j = json.dump(obj, ensure_ascii=False)
32 db = pymongo.MongoClient(uri)[ac]
34 item = table.find({'no':re.compile(no)})
36 ans = item['name']+'\n'+item['no']
39 for x in item.sort('no'):
42 for x in table.find().sort('no'):
47 header = json.load(self.request.headers)
48 body = json.load(self.request.body)
49 hash = hmac.new(header['X-LINE-SIGNATURE'].encode('utf-8'),
50 body.encode('utf-8'), hashlib.sha256).digest()
51 signature = base64.b64encode(hash)
53 events = webhook.parse(body, signature)
54 except InvalidSignatureError:
55 raise tornado.web.HTTPError(400)
58 if (event['type'] == 'text')and(event['message']['type'] == 'text'):
59 linebot.reply_message(
61 TextSendMessage(text=self.main(event.Message.text))
64 class DummyHandler(tornado.web.RequestHandler):
69 db = pymongo.MongoClient(uri)[ac]
72 for x in data.split('\n'):
83 application = tornado.web.Application([(r'/callback',WebHookHandler),(r'/init',DummyHandler)],{'Debug':True})
85 if __name__ == '__main__':
86 token = os.environ['Access_Token']
87 ch = os.environ['Channel_Secret']
88 uri = os.environ['MONGODB_URI']
89 ac = os.environ['ACCOUNT']
90 linebot = LineBotApi(token)
91 webhook = WebhookParser(ch)
92 application.listen(5000)
93 tornado.ioloop.IOLoop.instance().start()