class Api(): def __init__(self, token, secret): self._app = Flask(__name__) self._api = LineBotApi(token) self._handler = WebhookHandler(secret) self.route() @_handler.add(MessageEvent, message=TextMessage) def callback(self): signature = request.headers['X-Line-Signature'] body = request.get_data(as_text=True) self._app.logger.info("Request body: " + body) print(body, signature) self._handler.handle(body, signature) return 'OK' # @handler.add(MessageEvent, message=TextMessage) def pretty_echo(self, event): self._api.reply_message(event.reply_token, TextSendMessage(text='text')) def route(self): self._handler.add(MessageEvent, message=TextMessage) self._app.add_url_rule('/callback', methods=['POST'], view_func=self.callback) def run(self, port=8080): self._app.run(port=port)
id = db.Column(db.Integer,primary_key=True) groupid = db.Column(db.String(),nullable=False) def __init__(self, groupid): self.groupid = groupid @app.route("/callback", methods=['POST']) def callback(): # get X-Line-Signature header value signature = request.headers['X-Line-Signature'] # get request body as text body = request.get_data(as_text=True) # handle webhook body try: handler.handle(body, signature) except InvalidSignatureError: abort(400) return '' @handler.add(JoinEvent) def shiyoya(event): line_bot_api.reply_message( event.reply_token, TextSendMessage(text="月に2〜5回ランダムで突然飲みたがります!どうぞよろしく!!")) groupid = event.source.group_id reg = Ids(groupid) db.session.add(reg) db.session.commit() if __name__ == '__main__': app.run()
@contextlib.contextmanager def stdoutIO(stdout=None): old = sys.stdout if stdout is None: stdout = StringIO() sys.stdout = stdout yield stdout sys.stdout = old def open(*args,**kwargs): raise IOError def dir(*args,**kwargs): raise IOError @composed(handler.add(MessageEvent, message=TextMessage)) def handle_message(event): profile = line_bot_api.get_profile(event.source.user_id) id = str(profile.user_id) if(id not in EnterInput.user_input): EnterInput.user_input[id]=[] if(id not in EnterInput.input): EnterInput.input[id] = False if(EnterInput.input[id]): get_message = event.message.text case = get_message.split("\n") EnterInput.user_input[id] = case[:] EnterInput.input[id] = False reply_message = TextSendMessage(text="Now enter your program")