質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

GoogleComputeEngine

GoogleComputeEngineとは、Linux VMをGoogleのデータセンター上で走らせるIaaS (インフラストラクチャ アズ ア サービス)製品で、ビジネス向けクラウドコンピューティング基盤のことです。

Q&A

解決済

1回答

1709閲覧

GCEのMINECRAFTサーバーをDiscordから操作できるようにしたいが、pyファイルを実行しても何も起こらない

4649

総合スコア11

Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

GoogleComputeEngine

GoogleComputeEngineとは、Linux VMをGoogleのデータセンター上で走らせるIaaS (インフラストラクチャ アズ ア サービス)製品で、ビジネス向けクラウドコンピューティング基盤のことです。

0グッド

0クリップ

投稿2021/08/07 04:25

前提

・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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

たとえば、

if validationTime > timestamp:
exit()

の条件で終了していることはありませんか?

それぞれの条件での処理前にメッセージを出すようにするとどれを処理したことがわかりやすいと思います。

投稿2021/08/07 22:47

CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

4649

2021/09/19 16:56

高評価やベストアンサーに時間がかかり申し訳ありません、1から勉強をし解決いたしました。 >それぞれの条件での処理前にメッセージを出すようにするとどれを処理したことがわかりやすいと思います。 こちらも参考にさせていただきます、改めてありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問