1 # -*- coding: utf-8 -*-
3 Created on Sat Sep 1 11:18:39 2018
11 import os, hmac, base64, hashlib, re
12 import json, pytz, pymongo
13 from datetime import datetime
14 from linebot import LineBotApi, WebhookParser, WebhookHandler
15 from linebot.exceptions import InvalidSignatureError
16 from linebot.models import TextSendMessage
17 from multiprocessing.connection import answer_challenge
20 class WebHookHandler(tornado.web.RequestHandler):
22 mes = self.get_argument('code','')
23 self.write(self.main(mes))
26 pz = pytz.timezone('Asia/Tokyo')
27 now = datetime.now(pz)
30 if (w < 5)and(t >= 9)and(t < 16):
32 db = pymongo.MongoClient(uri)[ac]
34 item = table.find({'no':re.compile(no,re.IGNORECASE)})
37 ans = x['name']+'\n'+x['no']
38 elif item.count() > 1:
41 list1 = sorted(obj, key=lambda k:k['name'])
43 if x['name'] == list1[0]['name']:
44 ans += x['name']+'\n'+x['no']+'\n'
50 for x in sorted(list1, key=lambda k:k['no']):
54 for x in table.find().sort('no'):
59 header = json.load(self.request.headers)
60 body = json.load(self.request.body)
61 hash = hmac.new(header['X-LINE-SIGNATURE'].encode('utf-8'),
62 body.encode('utf-8'), hashlib.sha256).digest()
63 signature = base64.b64encode(hash)
65 events = webhook.parse(body, signature)
66 except InvalidSignatureError:
67 raise tornado.web.HTTPError(400)
70 if (event['type'] == 'text')and(event['message']['type'] == 'text'):
71 linebot.reply_message(
73 TextSendMessage(text=self.main(event.Message.text))
76 class DummyHandler(tornado.web.RequestHandler):
81 db = pymongo.MongoClient(uri)[ac]
84 for x in data.split('\n'):
95 application = tornado.web.Application([(r'/callback',WebHookHandler),(r'/init',DummyHandler)])
97 if __name__ == '__main__':
98 token = os.environ['Access_Token']
99 ch = os.environ['Channel_Secret']
100 uri = os.environ['MONGODB_URI']
101 ac = os.environ['ACCOUNT']
102 linebot = LineBotApi(token)
103 webhook = WebhookParser(ch)
104 application.listen(5000)
105 tornado.ioloop.IOLoop.instance().start()