Koyebで無料のDiscord Botを構築してみた

こんにちは、ナナオです。 サーバー維持費、気になりますよね。 今回は無料で使えるサービスでDiscordのBotを作っていきたいと思います。 初期設定 まずは土台作りとして、Discordとボットのコードを実装していきます。 Discord側の初期設定 以下のURLからデベロッパーコンソールにアクセスします。 Discord Developer Portal ログインすると以下の画面になります。 「New Application」をクリックして新しくアプリケーションを作成します。 作成したアプリケーションのBotタブに行き、Reset Tokenでトークンを発行し、コピーしておきます。 Message Content Intentもオンにしておきます。 これをしないとBotがメッセージを読むことができないです。 ボットをサーバーに招待します。 InstallationタブからGuild InstallのScopesにbotを追加し、権限を設定します。(ここ重要) 今回は管理者権限にしました。 Install Linkをコピーし、ブラウザに貼り付けます。 インストールに成功すると、以下のようなウィンドウが表示されます。 サーバー側にも通知が飛びます。 Pythonの実装 コードを書いていきましょう。 パッケージをUVで作成します。 uv init --package discord-bot-playground giboでignorefileに追記します。 gibo dump Python >> .gitignore .envファイルを作成し、先ほど作成したDiscord botのトークンを貼り付けておきます。 DISCORD_BOT_TOKEN="xxx..." 必要なライブラリを追加します。 uv add discord.py dotenv コードを書きます。 ここでは簡単なコマンド実行をしていきます。 デコレーターでめちゃくちゃ簡単に実装できます。 import os from dotenv import load_dotenv import discord load_dotenv() DISCORD_BOT_TOKEN = os.environ.get("DISCORD_BOT_TOKEN") DISCORD_GUILD_ID = int(os.environ.get("DISCORD_GUILD_ID")) guild_id = discord.Object(id=DISCORD_GUILD_ID) intents = discord.Intents.default() client = discord.Client(intents=intents) tree = discord.app_commands.CommandTree(client) @client.event async def on_ready(): await tree.sync(guild=guild_id) @tree.command() async def hello(interaction: discord.Interaction): """Says hello!""" await interaction.response.send_message(f"Hi, {interaction.user.mention}") client.run(DISCORD_BOT_TOKEN) ポイントとしてはon_readyでsyncする際にギルドIDをしているところです。 ...

2026年1月17日 · にあえん