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

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

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

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

588閲覧

discordbotを動かしたい。

退会済みユーザー

退会済みユーザー

総合スコア0

Discord

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2021/03/26 04:24

前提・実現したいこと

ターミナルでbotを動かそうとするとエラーがでてしまいます。

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

Traceback (most recent call last): File "C:\Users\matsu\discord\discord\raimagu.py", line 2, in <module> import discord File "C:\Users\matsu\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\__init__.py", line 25, in <module> from .client import Client ImportError: cannot import name 'Client' from 'discord.client' (C:\Users\matsu\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\client.py)

該当のソースコード

python

1import datetime 2import discord 3import token 4import time 5 6#トークンが貼ってある場所を読み込む 7with open("token.txt") as f: 8 token = f.read() 9 10client = discord.Client() 11 12channelid = "824572502440542249" 13 14 15class Myclient(): 16 17 @client.event 18 async def on_ready(): 19 print("BOT Online") 20 print("-"*28) 21 print("BOT_NAME :", client.user.name) 22 print("BOT_ID :", client.user.id) 23 print("discord.Ver :", discord.__version__) 24 print("-"*28) 25 26 @client.event 27 async def on_message(message): 28 29 # 送信者がbotの場合反応しない 30 if message.author.bot: 31 return 32 33 print("----------------------") 34 print("発言者name :", message.author.name) 35 print("発言者id :", message.author.id) 36 print("発言場所鯖name :", message.guild.name) 37 print("発言場所鯖id :", message.guild.id) 38 print("発言場所チャンネルname :", message.channel.name) 39 print("発言場所チャンネルid  :", message.channel.id) 40 print("----------------------") 41 42 channel = client.get_channel(int(channelid)) 43 embed = discord.Embed( 44 title='発言情報', description='誰がどこで発言したか出します。', color=16) 45 embed.add_field( 46 name="発言場所鯖", value=message.guild.name, inline=True) 47 embed.add_field( 48 name="発言チャンネル", value=message.channel.name, inline=True) 49 embed.add_field( 50 name="発言者", value=message.author.name, inline=True) 51 await channel.send(embed=embed) 52 53 if message.content == "help": 54 embed = discord.Embed(title="コマンドリスト", description=f"らいまぐbot.V1") 55 embed.add_field( 56 name="<重要>", value="新しく進化したらいまぐbotです。") 57 embed.add_field( 58 name="<お知らせ>", value="発言者情報が分かるようにしました、詳しくはコマンド[links]でご確認ください") 59 embed.add_field( 60 name="<新コマンド>", value="現在時刻, time") 61 embed.add_field( 62 name="<作者のメモ>", value="ボイスメンバーの処理をどうにかする") 63 embed.add_field( 64 name="-----manage-----", value="""・help 65>>>これ 66・test 67>>>動作確認 68・links 69>>>なんかいろいろなリンクだします。 70・info 71>>>情報など出します。 72・サーバー確認 73>>>サーバーの人数とか出します。 74・ボイスメンバー 75>>>通話にいる人の名前を出します。 76・現在時刻, time 77>>>現在の時間を出します。 78""") 79 80 await message.channel.send(embed=embed) 81 if message.content == "test": 82 await message.channel.send(f"{message.author.mention}動いてるよ") 83 84 if message.content == "links": 85 embed = discord.Embed( 86 title="リンク集", description=f"メッセージURLの追加は[こちら](https://www.instagram.com/raito_0119?utm_source=qr)をクリックし、申し立ててください。") 87 embed.add_field( 88 name="作者のアカウント", value="作者のアカウントは[こちら](ここに僕のアカウントのURLが貼ってあります。)です。") 89 embed.add_field( 90 name="参加URL", value="""このbotを自サーバーに入れるには[こちら](https://discord.com/api/oauth2/authorize?client_id=821982264577228810&permissions=8&scope=bot)をクリックしてください。""") 91 embed.add_field( 92 name="発言情報を見る鯖", value="発言情報を見るには[こちら](https://discord.gg/C5DCUQRe)の鯖に入ってください。") 93 await message.channel.send(embed=embed) 94 95 if message.content == "サーバー確認": 96 guild = message.guild 97 dt = datetime.datetime.now() 98 now = dt.strftime('%m月%d日 %H:%M') 99 time = dt.strftime('%H:%M') 100 member_count = guild.member_count # メンバー数 101 bot_count = sum(1 for member in guild.members if member.bot) 102 user_count = sum(1 for member in guild.members if not member.bot) 103 # Embedの作成 104 embed = discord.Embed(title=f'{now}時点のメンバー数') 105 embed.set_author( 106 name='ここのサーバー', icon_url='https://bit.ly/3lP4Gse') 107 embed.add_field( 108 name='◇メンバー数', value=member_count, inline=True) 109 embed.add_field( 110 name='◇ユーザー数', value=bot_count, inline=True) 111 embed.add_field( 112 name='◇bot数', value=user_count, inline=True) 113 await message.channel.send(embed=embed) 114 115 if message.content == "info": 116 embed = discord.Embed(title="bot情報", description=f"らいまぐbot.V1") 117 embed.add_field( 118 name="<重要>", value="新しく進化したらいまぐbotです。") 119 embed.add_field( 120 name="<お知らせ>", value="発言者情報が分かるようにしました、詳しくはコマンド[links]でご確認ください") 121 embed.add_field( 122 name="<新コマンド>", value="現在時刻, time") 123 await message.channel.send(embed=embed) 124 125 if message.content.startswith("ボイスメンバー"): 126 name = [member.name for member in message.author.voice.channel.members] 127 embed = discord.Embed( 128 title=f'{now}時点のボイスメンバー') 129 embed.add_field(name='ボイスメンバー', value=name) 130 await message.channel.send(embed=embed) 131 132 if message.content == '現在時刻' or message.content == 'time': 133 dt = datetime.datetime.now() 134 now = dt.strftime('%m月%d日 %H:%M') 135 time = dt.strftime('%H:%M') 136 await message.channel.send(f'{time}ニダ') 137 138 139client.run(token) 140

試したこと

pip install discordやpip install discord.pyとインストールしてみました。

補足情報(FW/ツールのバージョンなど)

python, discordすべて最新バージョンです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

ソースコードに問題があるようには思えません。

まず pip uninstall discorddiscord パッケージをアンインストールしてください。
これで解決しなければ…

トレースバックを拝見したところ、ファイル名やフォルダ名が「discord」になっているように見受けられます。
フォルダ構造が今のところ把握できていないのですが、
raimagu.py を実行したときPythonは import discord という記述を発見しますが、このときPythonはあなたの作成した discord.py ファイルないし discord フォルダをimport時に発見している可能性があります。

importするパッケージと同じ名前をファイルやフォルダに付けると名前が衝突する可能性が高いので、リネームしてみてください。

投稿2021/03/26 04:46

編集2021/03/26 04:49
coolwind0202

総合スコア708

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

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

退会済みユーザー

退会済みユーザー

2021/03/26 07:59

回答ありがとうございます。 アンインストールやリネームや別のフォルダーでやってみましたができませんでした。。。
coolwind0202

2021/03/26 16:17 編集

このエラーはやはりパッケージのインポートに関連するエラーのように思えますので、 もうやっていたら申し訳ないのですが、もう一度discord.pyの最新のバージョンをインストールしてください。 pip install -U discord.py また、ファイル名に関して、もし raimagu.py の付近に client.py などの名前のファイル・フォルダがあればリネームしてください。
退会済みユーザー

退会済みユーザー

2021/03/29 07:35

すみません、回答遅れました、あのあと言われた通りやりましたができず、二日放置してたらできました! 回答してもらったというのにすみません????
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問