XserverでDiscord.pyを常駐させる方法

  • このエントリーをはてなブックマークに追加

はじめに

Xserverが全国の中高生向けに無償でサーバー環境を提供するプログラムがやっていたのでXserverを触ったことがないこともあって気になっていたので少し触ってみました。

ちな主がN高なんでN高要素少し含みます。

とりあえず今回はリア友にDiscord Botを作りたい的なことを言ってる人がいたのでDiscord.pyを常駐させることを目標にします。

Xserverの初期設定

下のリンクからアカウントを作成します。

https://www.xserver.ne.jp/student

多分下のリンクからアカウントを作るとできた直後に学生証のアップロードが求められますがN高の場合マイページの学生証をスクショしてアップロードするだけで1,2時間でいけました。

通ったらまずSSHを有効化します。サーバーパネルのアカウントのSSH設定から有効化し場合によっては公開鍵をここで登録しちゃうと便利です。

sshのユーザー名が最初わからなかったのですがサーバーIDでいけました。ちなportは10022でした。

pipが使えない問題

Pythonを使う上でpipが使えないと不便すぎるんでとりあえずpipを使えるようにしていきます。

ggるとAnacondaを使う場合が多いようですが個人できにAnacondaが嫌いだし追加であまりソフトウェアを入れたくないので今回はvenvを使っていいきます。

python3.6 -m venv --without-pip .venv

Xserverで使えるpython3系は3.6だけみたいなんでとりあ3.6でvenv環境を作ります。

source .venv/bin/activate

venv環境に入ったら以下のコマンドでインストール用のスクリプトを持ってきてインストールします。

curl -O https://bootstrap.pypa.io/pip/3.6/get-pip.py
python get-pip.py

とりあえずこれでpipが使えるようになったのでdiscord.pyを持ってきます。

pip install discord.py

これでdiscord.pyを使えるようになったのでとりあサンプルをviで入れてきます。実際やるならVSCodeとかを使って開発した方がいいような気がします。NeoVim入れてそのまま開発しちゃってもいいですが

import discord

TOKEN = 'discord_token'

intents = discord.Intents.default()
intents.messages = True
client = discord.Client(intents=intents)

@client.event
async def on_ready():
    print('Hello World')

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    if message.content.startswith("hello"):
        await message.channel.send("world")

client.run(TOKEN)

これをpythonで実行したいのですがそのまま実行しちゃうとsshを切ると死んじゃうんでnohupを使います。

nohup python main.py &

これでssh閉じても大丈夫です。

ボットを殺したい時は適当にpsでプロセス調べてkillしてください。

終わりに

自宅鯖民はそのまま家で動かせるのでいいですが鯖難民は結構いいなぁって感じました。

だけどやっぱりrootがない環境での開発は慣れなくて結構辛いですね。

さぁこれを楽しく思ったら自宅に鯖をおいて自宅k8sをおすすめします。

  • このエントリーをはてなブックマークに追加

コメントを残す

*