愛犬アレックス(アイコンの犬)「お腹すいたわん、でも、飼い主がいないわん。困ったわん」
🐶「そうだ!discord経由で連絡すればいいわん!」
🐶「この間、建てた家族用のサーバーを使うわん!」
🐶「でも、キーボード打てないわん……困ったわん……」
🐶「そうだ、この間ご主人がくれたこのボタン、discordのbotになってるって言ってたわん!」
🐶「押してみよ!」
U・ω・U)ノ凸”ポチッ
bot「(シーン)」
ワシ「(シーン)」
🐶「(シーン)」
🐶「使えないやんけ!!!!!」
こんな🐶を救うために、今日はDiscord.pyを使用して
実行ファイルの起動時、特定の名前のチャンネルにメッセージを出す方法を解説してます!
前提条件・実行環境
- python3以上
- discord.pyのインストール
- disocrdでのアプリ作成・TOKENなどの取得
- botの権限周りの設定が完了している
- 投稿日現在は機能しているが、discordAPIのアップデートによる仕様変更の可能性あり
上記の環境設定が完了していることを前提とします。
コードの内容
import discord
TOKEN='your_token' #discordで取得したTOKEN
intents = discord.Intents.default()
intents.messages = True
client = discord.Client(intents=intents)
@client.event
async def on_ready():
ch_name = "一般" # ここで通知するチャンネル名を決定する
for channel in client.get_all_channels():
if channel.name == ch_name:
await channel.send("ご飯をくれ!") #送信するメッセージ
client.run(TOKEN)
詳細説明
以下のPythonコードは、DiscordのBotを起動し、特定のチャンネルにメッセージを送信するプログラムです。コードの各部分を詳細に解説します。
-
ライブラリのインポート
import discord
-
discord
ライブラリをインポートします。このライブラリはDiscord APIとやり取りするために使用されます。
-
-
Botトークンの設定
TOKEN = 'your_token' # Discord Developer Portalで取得したBotのトークン
- Discord Developer Portalで取得したBotのトークンを設定します。
your_token
の部分を実際のトークンに置き換えてください。
- Discord Developer Portalで取得したBotのトークンを設定します。
-
インテンツの設定
intents = discord.Intents.default() intents.messages = True # メッセージ関連のインテンツを有効にする
-
intents
は、Botがどの種類のイベントを受け取るかを設定します。default()
メソッドでデフォルトのインテンツを取得し、intents.messages = True
でメッセージ関連のイベントを有効にします。
-
-
Discordクライアントの作成
client = discord.Client(intents=intents)
-
discord.Client
を初期化し、先ほど設定したintents
を渡します。
-
-
on_ready
イベント@client.event async def on_ready(): # Botが起動した際に呼び出されるイベント print(f'Logged in as {client.user}') # ログインしたユーザーの名前を出力
-
@client.event
デコレーターを使用して、Botが起動した際に実行されるon_ready
イベントを定義します。 -
print(f'Logged in as {client.user}')
で、Botがログインしたことをコンソールに出力します。
-
-
指定チャンネルへのメッセージ送信
ch_name = "一般" # ここで通知するチャンネル名を決定する # サーバー内の全チャンネルを取得し、指定されたチャンネル名と一致するチャンネルを探す for channel in client.get_all_channels(): if channel.name == ch_name: await channel.send("起動しました") # メッセージを送信 break # メッセージ送信後にループを終了
-
ch_name
変数に通知するチャンネル名を設定します。この例では"一般"
というチャンネル名を使用しています。 -
client.get_all_channels()
でサーバー内の全チャンネルを取得し、指定されたチャンネル名と一致するチャンネルを探します。 - 一致するチャンネルが見つかったら、
await channel.send("起動しました")
でメッセージを送信し、break
でループを終了します。
-
-
Botの起動
client.run(TOKEN)
-
client.run(TOKEN)
でBotを起動し、Discordサーバーに接続します。
-
このコードを実行することで、Discordサーバーに接続し、指定されたチャンネルにメッセージを送信するBotが起動します。 your_token
の部分を実際のBotトークンに置き換えてください。また、Botがメッセージを送信できるようにするために、サーバーで適切な権限を持っていることを確認してください。
終わりに
🐶「これでご主人を簡単に呼べるわん!」
🐶「でも、起動時にしか呼べないの困るわん…??(次回予告)」