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 json, os
11 from linebot import LineBotApi, WebhookParser, WebhookHandler
12 from linebot.exceptions import InvalidSignatureError
13 from linebot.models import MessageEvent, TextMessage, TextSendMessage
14
15
16 class WebHookHandler(tornado.web.RequestHandler):    
17     def post(self):
18         signature = json.load(self.request.headers['X-Line-Signature'])
19         data = json.load(self.request.body)
20         try:
21             events = webhook.parse(data, signature)
22         except InvalidSignatureError:
23             raise tornado.web.HTTPError(400)
24             return
25         for event in events:
26             if not isinstance(event, MessageEvent):
27                 continue
28             if not isinstance(event.message, TextMessage):
29                 continue
30             linebot.reply_message(
31                 event.reply_token,
32                 TextSendMessage(text=event.message.text)
33             )
34         self.set_status(200)
35
36 application = tornado.web.Application([(r'/callback',WebHookHandler)])
37
38 if __name__ == '__main__':
39     token = os.environ['Access_Token']
40     ch = os.environ['Channel_Secret']
41     linebot = LineBotApi(token)
42     webhook = WebhookParser(ch)  
43     application.listen(5000)
44     tornado.ioloop.IOLoop.instance().start()