1 # -*- coding: utf-8 -*-
3 Created on Sat Sep 1 11:18:39 2018
13 from datetime import datetime
14 from linebot import LineBotApi, WebhookParser
15 from linebot.exceptions import InvalidSignatureError
16 from linebot.models import TextSendMessage
19 class WebHookHandler(tornado.web.RequestHandler):
21 mes = self.get_argument('code','')
22 self.write(self.main(mes))
25 pz = pytz.timezone('Asia/Tokyo')
26 now = datetime.now(pz)
29 if (w < 5)and(t >= 9)and(t < 16):
31 db = pymongo.MongoClient(uri)[ac]
33 item = table.find({'no':re.compile(no,re.IGNORECASE)})
36 ans = x['name']+'\n'+x['no']
37 elif item.count() > 1:
40 list1 = sorted(obj, key=lambda k:k['name'])
42 if x['name'] == list1[0]['name']:
43 ans += x['name']+'\n'+x['no']+'\n'
50 for x in sorted(list1, key=lambda k:k['no']):
58 for x in table.find().sort('no'):
64 signature = self.request.headers['X-Line-Signature']
65 body = self.request.body
66 parser = WebhookParser(ch)
68 parser.parse(body, signature)
69 except InvalidSignatureError:
70 tornado.web.HTTPError(404)
73 dic = tornado.escape.json_decode(self.request.body)
74 for event in dic['events']:
75 if 'replyToken' in event:
76 linebot.reply_message(
78 TextSendMessage(text=self.main(event['message']['text']))
81 class DummyHandler(tornado.web.RequestHandler):
86 db = pymongo.MongoClient(uri)[ac]
89 for x in data.split('\n'):
100 application = tornado.web.Application([(r'/callback',WebHookHandler),(r'/init',DummyHandler)])
102 if __name__ == '__main__':
103 token = os.environ['Access_Token']
104 ch = os.environ['Channel_Secret']
105 uri = os.environ['MONGODB_URI']
106 ac = os.environ['ACCOUNT']
107 port = int(os.environ.get('PORT',5000))#important in heroku
108 linebot = LineBotApi(token)
109 webhook = WebhookParser(ch)
110 application.listen(port)
111 tornado.ioloop.IOLoop.instance().start()