前提
・MINECRAFTサーバーインスタンスの作成、設定済み
・Discord Botインスタンスを作成済み
・権限
compute.instances.start
compute.instances.stop
compute.instances.get
compute.zoneOperations.get
を与えたサービスアカウントを作成済み
発生している問題・エラーメッセージ
python3 MineAdmin.py と打っても何も表示されない(BOTも起動しない)
該当のソースコード
MineAdmin.py
import os import os.path import dotenv import requests import json import datetime import subprocess dotenvPath = os.path.join(os.path.dirname(__file__), '.env') dotenv.load_dotenv(dotenvPath) DISCORD_TOKEN = os.environ['DISCORD_TOKEN'] CHECK_CHANNEL_ID = os.environ['CHECK_CHANNEL_ID'] url = f'https://discordapp.com/api/channels/{CHECK_CHANNEL_ID}/messages' queryString = {'limit':'1'} payload = '' headers = { 'Content-Type': 'application/json', 'Authorization': f'Bot {DISCORD_TOKEN}', 'cache-control': 'no-cache', } response = requests.request('GET', url, data='', headers=headers, params=queryString) lastMessageJson = json.loads(response.text).pop() userName = lastMessageJson['author']['username'] + '#' + lastMessageJson['author']['discriminator'] content = lastMessageJson['content'] timestamp = datetime.datetime.strptime(lastMessageJson['timestamp'][:-13], "%Y-%m-%dT%H:%M:%S") validationTime = datetime.datetime.now() - datetime.timedelta(minutes=2) # 古い投稿は無視 if validationTime > timestamp: exit() SERVICE_ACCOUNT_ID = os.environ['SERVICE_ACCOUNT_ID'] GCP_PROJECT_NAME = os.environ['GCP_PROJECT_NAME'] MINECRAFT_INSTANCE_NAME = os.environ['MINECRAFT_INSTANCE_NAME'] MINECRAFT_INSTANCE_ZONE = os.environ['MINECRAFT_INSTANCE_ZONE'] payload = '' option = '' if content == '/start': payload = '{"content":"Starting up server...","tts":false,"embed":{}}' option = 'start' elif content == '/stop': payload = '{"content":"Stopping server...","tts":false,"embed":{}}' option = 'stop' if payload != '': requests.request('POST', url, data=payload, headers=headers, params='') command = f'/snap/bin/gcloud --account={SERVICE_ACCOUNT_ID} compute instances {option} {MINECRAFT_INSTANCE_NAME} --project {GCP_PROJECT_NAME} --zone {MINECRAFT_INSTANCE_ZONE}' subprocess.call(command.split())
.env
# Discordのトークンを記述 DISCORD_TOKEN=xxxxxxxxxxxx # コマンドを入力するチャンネルのID CHECK_CHANNEL_ID=xxxxxxxxxxxx # サービスアカウントID SERVICE_ACCOUNT_ID=account@project.xxx.xxx.xxx # プロジェクト名 GCP_PROJECT_NAME=project # マイクラサーバーインスタンスの名前 MINECRAFT_INSTANCE_NAME=server # マイクラサーバーインスタンスのゾーン MINECRAFT_INSTANCE_ZONE=zone
試したこと
・.envの環境変数に間違いがないか見直した
・python3,dotenvをアップデートした
補足情報(FW/ツールのバージョンなど)
Ubuntu 18.04 LTS
Python3.6.9
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/19 16:56