King's Domain ロゴ

King'sDomain

ボットホスティング入門

ボットホスティングへようこそ!このサービスは、あなたのカスタムコードボットを24時間365日、あなたのコンピュータがオフの時でも実行し続けるために設計されています。ボットとは、DiscordやTelegramのようなプラットフォーム上のタスクを自動化するプログラムのことです。当社のサービスでボットをホスティングすることで、ボットは常にオンラインでユーザーに利用可能な状態になります。

利用規約とリソース制限

当社のボットホスティングサービスは、指定されたプラットフォーム(例:Discord APIに接続するDiscordボット)でボットを実行することのみを目的としています。このサービスを他の目的(ウェブサイト、ゲームサーバー、悪意のあるアプリケーションのホスティングなど)で使用しようとする試みは、即時停止の対象となります。

無料プランには特定のリソース制限(例:256MB RAM、25% CPU)が適用されます。ボットが非常に大きくなったり、何千ものサーバーに参加したりする場合は、より多くのパワーを得るために有料プランへのアップグレードが必要になることがあります。

ボットトークンの取得

「トークン」とは、あなたのコードがボットアカウントにログインするために使用する、ユニークで秘密のパスワードです。これはあなたが必要とする最も重要な情報です。トークンは絶対に誰とも共有してはいけません。

Discordボットトークン

アプリケーションの作成

Discord Developer Portalにアクセスし、「New Application」をクリックします。名前を付けて「Create」をクリックしてください。

ボットユーザーを作成し、トークンを取得

アプリケーションの設定で、「Bot」タブに移動します。「Add Bot」をクリックします。ボットのユーザー名の下にある「Reset Token」をクリックして、トークンを表示・コピーします。

Gateway Intentを有効にする

「Intent」は、ボットが特定の種類の情報を受け取るために必要な権限です。同じ「Bot」ページで、下にスクロールして3つの「Privileged Gateway Intents」をすべて有効にします。これらがないと、ボットはサーバーに誰がいるか、新しいメンバーがいつ参加したか、メッセージの内容を読むことができません。

Telegramボットトークン

  1. BotFatherを見つける: Telegramアプリを開き、認証済みユーザー@BotFatherを検索します。
  2. 新しいボットを作成する: BotFatherとのチャットを開始し、/newbotコマンドを送信します。画面の指示に従ってください。
  3. トークンをコピーする: 完了すると、BotFatherがAPIトークンを提供します。これをコピーして安全な場所に保管してください。

ボットのためのPterodactyl環境

当社のパネルは、ボットを管理するための強力で隔離された環境を提供します。ここでは、主要な概念を簡単に説明します。

主要な起動変数

「Startup」タブは、サーバーを設定する場所です。ボットにとって、これらが最も重要な変数です:

  • BOT_TOKEN: 秘密のボットトークンを貼り付ける安全な場所です。
  • BOT_JS_FILE / BOT_PY_FILE: メインスクリプトファイルの名前です(例:index.jsbot.py)。
  • NODE_VERSION(JavaScriptボット用): 使用するNode.jsのバージョンを指定できます(例:16, 18, 20)。これは、コードやライブラリとの互換性を確保するために非常に重要です。

環境変数:安全な方法

コードに直接トークンを貼り付けるのは、パスワードを付箋に書くようなものです。環境変数は安全なロッカーのようなものです。「Startup」タブのBOT_TOKEN変数にトークンを置き、コードは他の誰にも見られることなくロッカーの中から値を要求できます。これが秘密情報を扱うプロフェッショナルで安全な方法です。

Discord.js (JavaScript) ガイド

このガイドでは、人気のdiscord.jsライブラリを使用してJavaScriptで書かれたDiscordボットをデプロイする方法を説明します。

1. `package.json`ファイル:ボットの買い物リスト

このファイルは不可欠です。どのNode.jsライブラリ(依存関係)をインストールするかをサーバーに伝えます。これは`npm`(Node Package Manager)の買い物リストのようなものだと考えてください。PCのプロジェクトフォルダでnpm init -yを実行して作成できます。"start"スクリプトを含み、依存関係にdiscord.jsがリストされている必要があります。

2. コード例:シンプルなPingボット

コードは環境からトークンを読み取り、機能するためにDiscordから正しい「Intent」を要求する必要があります。

// index.js
const { Client, GatewayIntentBits } = require('discord.js');

const client = new Client({
    intents: [
        GatewayIntentBits.Guilds,
        GatewayIntentBits.GuildMessages,
        GatewayIntentBits.MessageContent
    ]
});

client.on('messageCreate', message => {
    if (message.author.bot) return;
    if (message.content === '!ping') {
        message.reply('Pong!');
    }
});

const token = process.env.BOT_TOKEN;
client.login(token);

3. デプロイ手順

  1. index.jspackage.jsonファイルをファイルマネージャーにアップロードします。
  2. 「Startup」タブに移動します。トークンをBOT_TOKEN変数に貼り付けます。BOT_JS_FILE変数がindex.jsに設定されていることを確認してください。
  3. サーバーを起動します。コンソールに最初にnpm installが実行され、その後ボットがオンラインになります。

4. トラブルシューティング

"Error: Cannot find module 'discord.js'": これは、package.jsonファイルがない、間違っている、またはアップロードされていないことを意味します。ファイルが存在し、dependenciesの下に`discord.js`が正しくリストされていることを確認してください。

"TypeError: Cannot read properties of null (reading 'channels')": これは典型的な「Intent」の問題です。Discord Developer PortalですべてのPrivileged Gateway Intentsを有効にしていることを確認してください。

Discord.py (Python) ガイド

このガイドでは、discord.pyやそのフォーク(py-cord, nextcord)などのライブラリを使用してPythonで書かれたDiscordボットをデプロイする方法を説明します。

1. `requirements.txt`ファイル:Pythonの買い物リスト

当社のサーバーはこのファイルを使用して、`pip`で必要なPythonパッケージをインストールします。PCで、プロジェクトのターミナルで次のコマンドを実行してこのファイルを生成します:

pip freeze > requirements.txt

2. コード例:コマンド付きの改良版Pingボット

単純な`on_message`イベントも機能しますが、スケーラブルなボットを構築する正しい方法は`commands`拡張機能を使用することです。

# bot.py
import os
import discord
from discord.ext import commands

# Intentsは権限です。message_contentはコマンドを読むために必要です。
intents = discord.Intents.default()
intents.message_content = True

bot = commands.Bot(command_prefix='!', intents=intents)

@bot.command()
async def ping(ctx):
    """Pong!と返信します"""
    await ctx.send('Pong!')

# これがトークンを安全に取得する方法です
token = os.getenv("BOT_TOKEN")
bot.run(token)

3. 上級:Cogで整理する

より大きなボットの場合、コマンドを「Cog」と呼ばれる別のファイルに整理する必要があります。`cogs`という名前のフォルダを作成し、その中に`fun.py`のようなファイルを作成します:

# cogs/fun.py
from discord.ext import commands

class Fun(commands.Cog):
    def __init__(self, bot):
        self.bot = bot

    @commands.command()
    async def hello(self, ctx):
        await ctx.send(f'こんにちは {ctx.author.name}さん!')

async def setup(bot):
    await bot.add_cog(Fun(bot))

そして、メインの`bot.py`でこのcogをロードします:

# bot.py(cogをロードするように変更)
# ... (インポートとボットの設定は以前と同じ) ...

@bot.event
async def on_ready():
    print(f'{bot.user} としてログインしました')
    await bot.load_extension('cogs.fun')

token = os.getenv("BOT_TOKEN")
bot.run(token)

4. デプロイ手順

  1. `bot.py`、`requirements.txt`、および`cogs`フォルダをファイルマネージャーにアップロードします。
  2. 「Startup」タブに移動します。トークンをBOT_TOKEN変数に貼り付けます。BOT_PY_FILE変数がbot.pyに設定されていることを確認してください。
  3. サーバーを起動します。コンソールにpip install -r requirements.txtが実行され、その後ボットが起動します。

Telegramボットガイド

Telegramボットのホスティングも全く同じ原則に従います。環境変数からトークンを読み込むようにコードを準備し、依存関係ファイルを提供します。

Python Telegramボットの例

この例では、人気のpython-telegram-botライブラリを使用します。

# requirements.txt
python-telegram-bot==20.3
# main.py
import os
from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    await update.message.reply_text('ホストされたボットからこんにちは!')

def main() -> None:
    token = os.getenv("BOT_TOKEN") # トークンを安全に読み込む
    application = Application.builder().token(token).build()
    application.add_handler(CommandHandler("start", start))
    
    # これが常にTelegramに新しいメッセージを問い合わせます
    application.run_polling()

if __name__ == "__main__":
    main()

これをデプロイするには、`main.py`と`requirements.txt`をアップロードし、「Startup」タブで`BOT_TOKEN`を設定し、Pythonスクリプト名が`main.py`に設定されていることを確認します。