3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Discord BotAdvent Calendar 2020

Day 3

【Discord.py】ボイスチャンネルの招待メッセージを送信する

Last updated at Posted at 2020-12-02

#はじめに
###投稿者の自己紹介
どうもまぬおです!discord.pyでBotを開発しています。よろしくお願いします

###お知らせ
Discord Bot Advent Calendar 2020
この記事はDiscord Bot Advent Calendarの3日目の記事です。ほかの方の投稿もぜひご覧になってください

1日目【Discord.py】Discord.py 1.5で追加されたIntentsを攻略する
2日目【Discord.py】チャンネルを持ったカテゴリを作成する

他の日にも投稿しています。たくさんのViewありがとうございます!
良ければ、LGTMもよろしくお願いします!

###今回のテーマ
この記事は前回の続きです。前回は、ボイスチャンネルとテキストチャンネルを含んだカテゴリを作成するコマンドを作成しました。今回は、作成した後にボイスチャンネルへ招待メッセージを送信する方法について紹介します

また、この記事はある程度Botを開発したことがある中級者向けの記事になっています。Botの開発を始める方法などは書きませんので注意してください
初心者の方には、別の方が書いていただいた初心者向けの記事があります
ボクもこの記事からDiscord Bot開発を勉強し始めましたのでおすすめです!

PythonでDiscordBotを書く方法
##招待メッセージとは
スクリーンショット 2020-12-03 005540.png
招待メッセージはこういうものです
ボイスチャンネルに参加のボタンを押すと、ボイスチャンネルに参加することができます
###招待メッセージを手動で出してみる
まずは、手動で出す方法を見てみます
ボイスチャットを右クリックし、友達を招待を選びます
スクリーンショット 2020-12-03 012057.png
現れたメニューからURLをコピーして、テキストチャットに張り付けることで先ほどの招待メッセージを出すことができます
また、フレンドの名前の横の招待ボタンを押すと、フレンドのDMにワンクリックで招待メッセージを送ることもできます
URLはhttps://discord.gg/xxxxxxxxの形になります
syoutai.png
この一連の作業が、招待の作成です。次はこれをBotにさせてみます
###Botのターン
Botが招待を作成する関数VoiceChannelが持っています
create_invite()関数を呼ぶことで招待を作成することができます
戻り値はInviteが返ってきます。この変数でいろいろするわけですね

#招待を作成する
Invite = await VoiceChannel.create_invite()

このInviteにあるurl変数がhttps://discord.gg/xxxxxxxxの文字列を持っています

#招待URLを取得する
URLstr = Invite.url

このURLをテキストチャンネルに発言すれば、招待メッセージを送ることができそうです
##招待メッセージを発言する
###前回のコード

import discord
from discord.ext import commands

TOKEN = "TOKEN"

client = commands.Bot(command_prefix = "!")

@client.command()
async def lobby(ctx, arg):
    LobbyName = arg
    Guild = ctx.guild

    # カテゴリを作成する
    Category = await Guild.create_category(LobbyName)

    # チャンネルの作成時にカテゴリを設定する
    await Category.create_text_channel("テキストチャンネル")
    await Category.create_voice_channel("ボイスチャンネル1")
    await Category.create_voice_channel("ボイスチャンネル2")

client.run(TOKEN)

前回、コマンドを打つとロビーを作成するところまで実装しました
ここに招待メッセージを発言する処理を追加します

import discord
from discord.ext import commands

TOKEN = "TOKEN"

client = commands.Bot(command_prefix = "!")

@client.command()
async def lobby(ctx, arg):
    LobbyName = arg
    Guild = ctx.guild

    # カテゴリを作成する
    Category = await Guild.create_category(LobbyName)

    # チャンネルの作成時にカテゴリを設定する
    await Category.create_text_channel("テキストチャンネル")
    await Category.create_voice_channel("ボイスチャンネル1")
    await Category.create_voice_channel("ボイスチャンネル2")

    # 招待を作成する
    Invite = await VoiceChannel1.create_invite()

    # 招待メッセージを発言する
    Channel = ctx.message.channel
    await Channel.send(Invite.url)

client.run(TOKEN)

これで、招待メッセージの送信の処理完成です
見てみましょう
result.gif
Botが招待メッセージを送信していることが確認できます
この機能の追加で、ボイスチャンネルへの参加がわかりやすくなりました
ちなみにBotがメッセージを送るにはSend Messagesの権限が必要です
##おわりに
###返答機能はわかりやすい
今回はコマンド実行時のレスポンスとして、招待メッセージを出す機能を追加しました
前回の機能の実行結果はチャンネルの作成のみだったので、結果がテキストチャンネルからはわかり辛かったです
返答があるだけでずいぶん変わるものですね
###おわりのあいさつ
ここまで読んでいただき、ありがとうございました
この記事がみなさんの開発に役立つと幸いです
それでは良いDiscord Bot開発ライフを!
###各種バージョン
Python3 : 3.6.9
Discord.py : 1.5.1

3
2
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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?