1
0
はじめての記事投稿
Qiita Engineer Festa20242024年7月17日まで開催中!

Discord.pyで起動時に特定の名前のチャンネルでメッセージを出す方法

Posted at

愛犬アレックス(アイコンの犬)「お腹すいたわん、でも、飼い主がいないわん。困ったわん」
🐶「そうだ!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を起動し、特定のチャンネルにメッセージを送信するプログラムです。コードの各部分を詳細に解説します。

  1. ライブラリのインポート

    import discord
    
    • discord ライブラリをインポートします。このライブラリはDiscord APIとやり取りするために使用されます。
  2. Botトークンの設定

    TOKEN = 'your_token'  # Discord Developer Portalで取得したBotのトークン
    
    • Discord Developer Portalで取得したBotのトークンを設定します。your_token の部分を実際のトークンに置き換えてください。
  3. インテンツの設定

    intents = discord.Intents.default()
    intents.messages = True  # メッセージ関連のインテンツを有効にする
    
    • intents は、Botがどの種類のイベントを受け取るかを設定します。default() メソッドでデフォルトのインテンツを取得し、intents.messages = True でメッセージ関連のイベントを有効にします。
  4. Discordクライアントの作成

    client = discord.Client(intents=intents)
    
    • discord.Client を初期化し、先ほど設定した intents を渡します。
  5. 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がログインしたことをコンソールに出力します。
  6. 指定チャンネルへのメッセージ送信

    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 でループを終了します。
  7. Botの起動

    client.run(TOKEN)
    
    • client.run(TOKEN) でBotを起動し、Discordサーバーに接続します。

このコードを実行することで、Discordサーバーに接続し、指定されたチャンネルにメッセージを送信するBotが起動します。 your_token の部分を実際のBotトークンに置き換えてください。また、Botがメッセージを送信できるようにするために、サーバーで適切な権限を持っていることを確認してください。

終わりに

🐶「これでご主人を簡単に呼べるわん!」
🐶「でも、起動時にしか呼べないの困るわん…??(次回予告)」

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0