DiscordにMusicGenのbotを導入(失敗)



目標

タイトル通り,DiscordのチャンネルにMusicGenのbotを導入し,DiscordからMusicGenを使えるようにする.

参考

公式でやり方は載せてくれているので,これに則りながら進めつつ,わからないところを補強していく.


Prerequisites(前提条件)

  • Python 3.9.6

  • Terminal on Mac(M1: 8GB)

  • macOS Ventura 13.5

python3のバージョンは次のように確認した

% python3 -V
Python 3.9.6


Set up a Discord Bot account

このサイトに従ってbotアカウントを作ると記載されているが,次のサイトと組み合わせた方が分かりやすかった.

botユーザのセットアップ

メールアドレスとパスワードを入力してDiscord開発者ポータルサイトにログインすると,次のような画面になり「New Application」ボタンが見つかる.

「New Application」ボタンを押すと次のようなポップアップが出現するので,サイトに書いてあった名前で登録する.

外向けには作ってないので説明とかタグ付けは何も触らない.

Application IDとPublic Keyをメモ.

bot tokenの作成

左上にある三本線(上の画像には写ってない)のメニューのところをクリックすると色々出てくるのでBotを選択.

メニューを閉じてToken Resetってボタンを押してTokenを発行,メモ.
他の部分には触れない.

botをDiscordサーバに追加

メニューからOauth2を選択.そこからURL Generatorへ.

SCOPESの項目ではbotを選択.

BOT PERMISSIONSでは以下のものを選択する.

  • Manage Roles

  • Manege Channels

  • Read Messages/View Chennels

  • Send Messages 

  • Manage Messages

  • Embed Links

  • Attach Files

  • Read Message History

  • Use External Emojis

  • Use Slash Commands

  • Connect

  • Speak

選択をし終えたら,一番下にあるURLをコピーし,適当なブラウザのURL欄にコピーすると次のようになる.

加えたいサーバを選択する.


Write some code

適当なディレクトリに移動して次の命令をターミナルで実行.

mkdir stable-diffusion-bot
cd stable-diffusion-bot

Define Python dependencies(Pythonの依存関係の定義)

% poetry --version
zsh: command not found: poetry

poetryがインストールされてないので,インストールから始める.

手順にあるように次の命令をしたら怒られが発生した.

curl -sSL https://install.python-poetry.org | python3 -
Exception: This build of python cannot create venvs without using symlinks

シンボリックリンクを使用せずにPythonの仮想環境(venv)を作成できないことが原因らしい.

次のような命令でやってみたら入ったっぽい.

pip3 install poetry
stable-diffusion-bot % poetry --version
Poetry (version 1.6.1)

次にpyproject.tomlを新規作成.中身はまだ空.

`poetry init -n`をターミナルで実行したら勝手にpyproject.tomlに書き込まれてた.

[tool.poetry]
name = "stable-diffusion-bot"
version = "0.1.0"
description = ""
authors = [省略]
readme = "README.md"

[tool.poetry.dependencies]
python = "^3.10"


[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

`poetry add discord.py python-dotenv replicate`を実行したらpyproject.tomlに追記された.変わった部分だけ次に記す.

[tool.poetry.dependencies]
python = "^3.10"
discord-py = "^2.3.2"
python-dotenv = "^1.0.0"
replicate = "^0.11.0"

Configure environment and secrets

.envファイルを作成する(poetry.lockがいつのまにかできてた).

.envに書き込む,Replicateの方のAPIは,GitHubとかで連携して発行するともらえる.Discordの方はさっきメモしたものを貼り付ける.

REPLICATE_API_TOKEN=<your-token>
DISCORD_TOKEN=<your-token>

write the bot

bot.pyを作って書いてあるコードをコピペしただけ.

警告出てるけど?

 % pip3 install discord.py python-dotenv replicate

これやってみたけど警告は消えなかった.

仮想環境作って有効にした後,pip3でインストールしたら消えた.

python3 -m venv myenv  # 仮想環境の作成
source myenv/bin/activate  # 仮想環境をアクティブ化(Windows の場合は `myenv\Scripts\activate`)
pip3 install discord.py python-dotenv replicate

python3のバージョンは3.10以降が必要らしいので

 % poetry env use /opt/homebrew/bin/python3.10

Run your bot localy

次の命令をターミナルで実行してみたけど,怒られが発生した.

poetry run python bot.py
discord.errors.PrivilegedIntentsRequired: Shard ID None is requesting privileged intents that have not been explicitly enabled in the developer portal. It is recommended to go to https://discord.com/developers/applications/ and explicitly enable the privileged intents within your application's page. If this is not possible, then consider disabling the privileged intents instead.

次のようにしてみても同じエラーだった.

% python3 bot.py
% poetry run python3 bot.py

Discordで見てみるとbotがオフラインになっているので,これが原因かわからないけどひとまず常時オンラインになるように設定してみる.

クレジットカード入れなきゃいけなくて,支払いのが発生したら嫌だからこのサイトの方法は断念.

調べたけど治せなかったので断念.

何か解決策があれば追記しようと思う.
わかる人はコメントで教えてください……

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?