質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.44%
Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

1回答

1650閲覧

discord botのログイン処理について

Fuga

総合スコア0

Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2022/09/23 17:10

パイソンを勉強し始めるにあたってまずは手を動かそうと思い、discord で読み上げbotを作っています。
参考にしたサイトは下記の二つです。
はじめてでしたのでサイトの手順通りに作成しております。
https://appli-world.jp/posts/16908

https://qiita.com/9610r/items/d04bd91d373d31d9c3f3

コマンドプロンプトにてdiscord botのログインを行おうとしたところ下記のエラーメッセージが出力されました。

実現したいこと

discord botのログイン処理を行いたいです。
またエラーが起きている個所はわかるがどのように修正したらよいのかわからないので教えていただきたいです。

発生している問題・エラーメッセージ

エラーメッセージ
Traceback (most recent call last):
File "C:\open_jtalk\bin\read_bot.py", line 7, in <module>
client = commands.Bot(command_prefix='.')
TypeError: BotBase.init() missing 1 required keyword-only argument: 'intents'

該当のソースコード

discord.py

1import discord 2from discord.ext import commands 3import subprocess 4import ffmpeg 5from voice_generator import creat_WAV 6 7client = commands.Bot(command_prefix='.') 8voice_client = None 9 10 11@client.event 12async def on_ready(): 13 print('Logged in as') 14 print(client.user.name) 15 print(client.user.id) 16 print('------') 17 18 19@client.command() 20async def join(ctx): 21 #voicechannelを取得 22 vc = ctx.author.voice.channel 23 #voicechannelに接続 24 await vc.connect() 25 26@client.command() 27async def bye(ctx): 28 #切断 29 await ctx.voice_client.disconnect() 30 31@client.event 32async def on_message(message): 33 if message.content.startswith('.'): 34 pass 35 36 else: 37 if message.guild.voice_client: 38 print(message.content) 39 creat_WAV(message.content) 40 source = discord.FFmpegPCMAudio("output.wav") 41 message.guild.voice_client.play(source) 42 else: 43 pass 44 45 46client.run("あなたのTOKEN")

試したこと

discord.pyがインストールされているか→〇
Developer PortalにてIntentsが有効にされているかどうか→〇
ソースソースコードの”あなたのTOKEN”は個人のTOKENに変えているか→〇

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

client = commands.Bot(command_prefix='.') からclient = commands.Bot(command_prefix='.', intents=discord.Intents.all())に変えたら動くと思います。
(v2.0.0でintentsの指定が必須になりました)

投稿2022/09/24 03:05

gx1285

総合スコア136

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Fuga

2022/09/24 06:45

回答ありがとうございます。 ボットが無事にログインできました。 しかし、ソースコードにて指定しているコマンド(.join)にてボットが通話に入ってきてくれません。 ボットの開発者ポータルで権限を管理者にしてみましたがそれでもだめでした。 なにか原因わかりますでしょうか?
gx1285

2022/09/24 11:37

エラーも出ていませんか? discord.ext.commands.errors.CommandInvokeError: Command raised an exception: RuntimeError: PyNaCl library needed in order to use voiceが表示されていたら、pip install py -3 -m pip install -U discord.py[voice]を実行して、もう一度Botを実行したら動くと思います。
Fuga

2022/09/24 12:53

エラー見てみたらこのような文言がありました。 discord.gateway: Shard ID None has connected to Gateway 教えていただいたものとは違うみたいです
gx1285

2022/09/28 10:33

それはDiscordに接続したことを知らせるための文言です。 @client.command() async def join(ctx): #voicechannelを取得 vc = ctx.author.voice.channel #voicechannelに接続 await vc.connect() を @client.command() async def join(ctx): print("コマンド実行を受信") print(ctx.command.name) #voicechannelを取得 vc = ctx.author.voice.channel #voicechannelに接続 await vc.connect() に変えてコマンドを実行したらどうなりますか
gx1285

2022/09/28 10:34

インデント忘れてました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.44%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問