test_bot_Test / app.py
kkk2z1's picture
Update app.py
81c1f3d verified
raw
history blame
5.15 kB
import os
import time
from datetime import datetime
import json
import requests
import traceback
import random
def log(msg,type):
if type == 1:#通常ログ
time_datetime= datetime.now()
print(f"{time_datetime}[log]:{msg}")
elif type == 2: #警告
time_datetime= datetime.now()
print(f"{time_datetime}[warn]:{msg}")
elif type == 3: #エラー
time_datetime= datetime.now()
print(f"{time_datetime}[error]:{msg}")
traceback.print_exc()
def System_up(sec):
START_TIME = sec
while START_TIME > 0:
log(f"起動まで、{START_TIME}秒",1)
START_TIME = START_TIME - 1
time.sleep(1)
System_up(3)
log("起動しました。",1)
# ===== Channel.io 設定 =====
CHANNEL_ID = os.getenv("CHIO_CH_ID")#"200605" チャンネル
if not CHANNEL_ID:
raise RuntimeError("環境変数 CHIO_CH_ID が設定されていません")
GROUP_ID = os.getenv("CHIO_GR_ID")#"534868" グループ
if not GROUP_ID:
raise RuntimeError("環境変数 CHIO_GR_ID が設定されていません")
MESSAGES_URL = f"https://desk-api.channel.io/desk/channels/{CHANNEL_ID}/groups/{GROUP_ID}/messages"
X_ACCOUNT = os.getenv("CHIO_TOKEN") #トークン
if not X_ACCOUNT:
raise RuntimeError("環境変数 CHIO_TOKEN が設定されていません")
HEADERS = {
"accept": "application/json",
"accept-language": "ja",
"content-type": "application/json",
"x-account": X_ACCOUNT,
}
PARAMS = {
"sortOrder": "desc",
"limit": 50,
}
# ===== Utils =====
def ramdom_msg():
date = [
{"no":0,"by":"name","text":"message","call":"addres"},#0
{"no":1,"by":"name_00","text":"message","call":"addres"},#0
{"no":2,"by":"name_01","text":"message","call":"addres"},#0
{"no":3,"by":"name_02","text":"message","call":"addres"},#0
]
rand = random.randint(0, 3)#ランダム最大値指定。
if rand == 0:
ramdom_msg()#再起
log("辞書の0が指定されたから無視",1)
elif rand == 1:
try:
text = date[1]["text"]
by = date[1]["by"]
call = date[1]["call"]
send_to_channel(f"広告:{text}")
send_to_channel(f"{by}様より。call:{call}")
except Exception as e:
log(f"広告{rand}番エラー:{e}",3)
elif rand == 2:
try:
text = date[2]["text"]
by = date[2]["by"]
call = date[2]["call"]
send_to_channel(f"広告:{text}")
send_to_channel(f"{by}様より。call:{call}")
except Exception as e:
log(f"広告{rand}番エラー:{e}",3)
def get_messages():
try:
res = requests.get(
MESSAGES_URL,
headers=HEADERS,
params=PARAMS,
timeout=30,
)
res.raise_for_status()
return res.json().get("messages", [])
except Exception as e:
log(f"MSG取得関数に失敗:{e}",3)
def send_to_channel(text):
try:
payload = {
"requestId": f"desk-web-{int(time.time() * 1000)}",
"blocks": [
{
"type": "text",
"value": text
}
],
}
res = requests.post(
MESSAGES_URL,
headers=HEADERS,
data=json.dumps(payload),
timeout=30,
)
res.raise_for_status()
except Exception as e:
log(f"MSG送信関数に失敗:{e}",1)
#def send_to_channel_file(file_url):
# try:
# #get_request送る->https://files.electrohaxz.host/にupする->リンクをfile_urlに入れて送る。
# payload = {
# "requestId": f"desk-web-{int(time.time() * 1000)}",
# "blocks": [
# {
# "type": "text",
# "value": file_url
# }
# ],
# }
#
# res = requests.post(
# MESSAGES_URL,
# headers=HEADERS,
# data=json.dumps(payload),
# timeout=30,
# )
# res.raise_for_status()
#
# except Exception as e:
# log(f"ファイルアップロード関数に失敗:{e}",1)
# ===== Main Loop =====
log("BOTのメインループを開始します。",1)
def main():
while True:
try:
NEXT_SEND = 120
while NEXT_SEND > 0:
log(f"次回まであと、{NEXT_SEND}秒",1)
NEXT_SEND = NEXT_SEND - 1
time.sleep(1)
send_to_channel(f"浮上。つまり、私がキタ━━━━(゚∀゚)━━━━!!。")
time_datetime= datetime.now()
send_to_channel(f"現在時刻は多分+UTCで{time_datetime}です!")
time.sleep(1)
ramdom_msg()
send_to_channel(f"\(^^)/眠くなったからおやすみ。また時報&宣伝します。\(^^)/")
except Exception as e:
log(f"メインループ:{e}",3)
if __name__ == "__main__":
main()