「hello」と送られたら「world」と返し、それ以外の言葉が送られたら「えびちゃん」と返す
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import cgitb
cgitb.enable()
import json, sys, requests
CHANNEL_ACCESS_TOKEN='アクセストークンをここにコピペしてください'
LINE_API_REPLY = 'https://api.line.me/v2/bot/message/reply'
def output(message):
LOG_FILE="logfile.log"
with oprn(LOG_FILE,'a') as ff:
ff.writelines(str("\n"))
ff.writelines(str(message))
def main():
try:
json_data=json.load(sys.stdin)
events=json_data["events"]
user_message=events[0]["message"]["text"]
for event in events:
#データとヘッダーを用意する、最後にリクエスト,ポストで返信する
reply_token=event['replyToken']
headers={
'Content-Type': 'application/json; charset=UTF-8',
'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN,
}
if user_message == "hello":
message="world"
else:
message="えびちゃん"
postdata={
'replyToken': reply_token,
'messages': [{
'type': 'text',
'text': message
}],
}
requests.post(LINE_API_REPLY, data=json.dumps(postdata), headers=headers)
except Exception as e:
output(e)
if __name__ == "__main__":
print("Access-Control-Allow-Headers: Origin, Content-Type\r\nAccess-Control-Allow-Origin: *\r\nAccess-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS\r\nContent-Type: application/json\r\n")
print(json.JSONEncoder().encode(main()))




#!/usr/bin/python3
# -*- coding: utf-8 -*-
import cgitb
cgitb.enable()
import json, sys, requests
CHANNEL_ACCESS_TOKEN='アクセストークンをここにコピペしてください'
LINE_API_REPLY = 'https://api.line.me/v2/bot/message/reply'
1行目のおまじないは"python3"にしておく。
このおまじないは”どのpython環境をつかうか?”を選択しています。このサーバ上では~~python3がpython3系をつかうときのパスで、ここにpython3を使うためのファイルたちが眠ってるとおもわれます。
たとえば、このパスを !/home/ec/.venv/bin/python って指定すると、べつのpython環境で実行できるようになります。こっちに指定するとmongoというデータベースとかも使えます。だから電子マネー系のシステムとかはこっちの環境で開発してたりするそうです。
def output(message):
LOG_FILE="logfile.log"
with oprn(LOG_FILE,'a') as ff:
ff.writelines(str("\n"))
ff.writelines(str(message))
新しくファイルを作成してそこにログなどを書き込むようにするコードです。
9行目、コンプロでは習わなかった「with open()」という関数を使っています。「writelines()」も同様です。
下の画像のようにopenのみだとファイルの作成は出来たがjsonのオブジェクトを書き込むことができなかったので何も書かれていないファイルになってしまいます。

def main():
try:
json_data=json.load(sys.stdin)
events=json_data["events"]
user_message=events[0]["message"]["text"]
20行目から50行目までで返信の設定をしています。
今回は、任意のメッセージをユーザーに送れるようになることが目標でした。 まだまだLINEbotでできる事はたくさんあります。参考:Messaging APIの特徴