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

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

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

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

Python 3.x

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

Python

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

Q&A

解決済

1回答

4545閲覧

実行はできるけど反応しない。

退会済みユーザー

退会済みユーザー

総合スコア0

Discord

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

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2021/03/29 13:48

前提・実現したいこと

トークンを再発行したり構文を確認しました、コマンド実行したりしてもエラーは発生せず、反応しないだけです。

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

エラーはないのに反応しない

該当のソースコード

python

1import datetime 2import discord 3import random 4import token 5import time 6 7with open("token.txt") as f: 8 token = f.read() 9 10client = discord.Client() 11 12channelid = "824572502440542249" 13 14 15 16class Myclient: 17 18 @client.event 19 async def on_ready(): 20 print("BOT Online") 21 print("-"*28) 22 print("BOT_NAME :", client.user.name) 23 print("BOT_ID :", client.user.id) 24 print("discord.Ver :", discord.__version__) 25 print("-"*28) 26 27 28 29 30 @client.event 31 async def on_message(message): 32 33 # 送信者がbotの場合反応しない 34 if message.author.bot: 35 return 36 37 print("----------------------") 38 print("発言者name :", message.author.name) 39 print("発言者id :", message.author.id) 40 print("発言場所鯖name :", message.guild.name) 41 print("発言場所鯖id :", message.guild.id) 42 print("発言場所チャンネルname :", message.channel.name) 43 print("発言場所チャンネルid  :", message.channel.id) 44 print("----------------------") 45 46 channel = client.get_channel(int(channelid)) 47 embed = discord.Embed( 48 title='発言情報', description='誰がどこで発言したか出します。', color=discord.Colour.purple()) 49 embed.add_field( 50 name="発言場所鯖", value=message.guild.name, inline=True) 51 embed.add_field( 52 name="発言チャンネル", value=message.channel.name, inline=True) 53 embed.add_field( 54 name="発言者", value=message.author.name, inline=True) 55 await channel.send(embed=embed) 56 57 # 便利機能 58 if message.content == "help" or message.content == "へるぷ": 59 embed = discord.Embed(title="コマンドリスト", description=f"らいまぐbot.V3", color=discord.Colour.green()) 60 embed.add_field( 61 name="<このbotについて>", value="このbotは作者が暇で暇で死にそうだったので作ったbotです、鯖とか買ってないのでたまにbotの反応が遅かったり止まるときがあります、もし止まってしまい動かしてほしいとのことでしたら作者のインスタアカウント(コマンド:links)に問い合わせるか、発言情報を見る鯖(コマンド:links)にきてメンションして問い合わせてください。(朝昼晩問わすメンションしてかまわないです。)") 62 embed.add_field( 63 name="<重要>", value="新しく進化したらいまぐbotです。") 64 embed.add_field( 65 name="<お知らせ>", value="""1.発言者情報が分かるようにしました、詳しくはコマンド[links]でご確認ください 66 672.くさとかいろんな言葉に反応するようにしました、多分そのうち何に反応するかのコマンドリストを実装すると思います。""") 68 embed.add_field( 69 name="<新コマンド>", value="現在時刻, time") 70 embed.add_field( 71 name="<作者のメモ>", value="""1.ボイスメンバーの処理をどうにかする 72 732.クイズゲームを実装する""") 74 embed.add_field( 75 name="<コマンドリスト>", value="""・help, へるぷ 76>>>これ 77・test, てすと 78>>>動作確認 79・links, リンク, りんく 80>>>なんかいろいろなリンクだします。 81・リンクだして, りんくだして, リンクplz 82>>>このbotの招待urlをコピペ用に出します。 83・info, お知らせ, おしらせ 84>>>情報など出します。 85・サーバー確認 86>>>サーバーの人数とか出します。 87・ボイスメンバー 88>>>通話にいる人の名前を出します。 89・現在時刻, time 90>>>現在の時間を出します。 91""", inline=False) 92 93 await message.channel.send(embed=embed) 94 if message.content == "test" or message.content == "てすと": 95 await message.channel.send(f"{message.author.mention}動いてるよ") 96 97 if message.content == "links" or message.content == "リンク" or message.content == "りんく": 98 embed = discord.Embed( 99 title="リンク集", description=f"メッセージURLの追加は[こちら](https://www.instagram.com/raito_0119?utm_source=qr)をクリックし、申し立ててください。" ,color=discord.Colour.blue()) 100 embed.add_field( 101 name="作者のアカウント", value="作者のアカウントは[こちら](https://www.instagram.com/raito_0119?utm_source=qr)です。") 102 embed.add_field( 103 name="参加URL", value="このbotを自サーバーに入れるには[こちら](https://discord.com/api/oauth2/authorize?client_id=821982264577228810&permissions=8&scope=bot)をクリックしてください。") 104 embed.add_field( 105 name="発言情報を見る鯖", value="発言情報を見るには[こちら](https://discord.gg/C5DCUQRe)の鯖に入ってください。") 106 await message.channel.send(embed=embed) 107 108 if message.content == "リンクだして" or message.content == "りんくだして" or message.content == "リンクplz": 109 await message.channel.send("https://discord.com/api/oauth2/authorize?client_id=821982264577228810&permissions=8&scope=bot") 110 111 if message.content == "サーバー確認": 112 guild = message.guild 113 dt = datetime.datetime.now() 114 now = dt.strftime('%m月%d日 %H:%M') 115 time = dt.strftime('%H:%M') 116 member_count = guild.member_count # メンバー数 117 bot_count = sum(1 for member in guild.members if member.bot) 118 user_count = sum(1 for member in guild.members if not member.bot) 119 # Embedの作成 120 embed = discord.Embed(title=f'{now}時点のメンバー数') 121 embed.set_author( 122 name='ここのサーバー', icon_url='https://bit.ly/3lP4Gse') 123 embed.add_field( 124 name='◇メンバー数', value=member_count, inline=True) 125 embed.add_field( 126 name='◇ユーザー数', value=bot_count, inline=True) 127 embed.add_field( 128 name='◇bot数', value=user_count, inline=True) 129 await message.channel.send(embed=embed) 130 131 if message.content == "info" or message.content == "お知らせ" or message.content == "おしらせ": 132 embed = discord.Embed(title="bot情報", description=f"らいまぐbot.V3", color=discord.Colour.green()) 133 embed.add_field( 134 name="<このbotについて>", value="このbotは作者が暇で暇で死にそうだったので作ったbotです、鯖とか買ってないのでたまにbotの反応が遅かったり止まるときがあります、もし止まってしまい動かしてほしいとのことでしたら作者のインスタアカウント(コマンド:links)に問い合わせるか、発言情報を見る鯖(コマンド:links)にきてメンションして問い合わせてください。(朝昼晩問わすメンションしてかまわないです。)") 135 embed.add_field( 136 name="<重要>", value="新しく進化したらいまぐbotです。") 137 embed.add_field( 138 name="<お知らせ>", value="発言者情報が分かるようにしました、詳しくはコマンド[links]でご確認ください") 139 embed.add_field( 140 name="<新コマンド>", value="現在時刻, time") 141 embed.add_field( 142 name="<作者のメモ>", value="ボイスメンバーの処理をどうにかする") 143 await message.channel.send(embed=embed) 144 145 if message.content.startswith("ボイスメンバー"): 146 name = [member.name for member in message.author.voice.channel.members] 147 embed = discord.Embed( 148 title=f'{now}時点のボイスメンバー', color=discord.Colour.red()) 149 embed.add_field(name='ボイスメンバー', value=name) 150 await message.channel.send(embed=embed) 151 152 if message.content == '現在時刻' or message.content == 'time': 153 dt = datetime.datetime.now() 154 now = dt.strftime('%m月%d日 %H:%M') 155 time = dt.strftime('%H:%M') 156 await message.channel.send(f'{time}ニダ') 157 158 # おしゃべりに反応するやつ 159 if message.content == "くさ" or message.content == "草": 160 kusa = ["くさ", "草", "www"] 161 await message.channel.send(random.choice(kusa)) 162 163 if message.content == "ぬさ" or message.content == "むさ" or message.content == "ふさ" or message.content == "つさ" or message.content == "うさ" or message.content == "すさ": 164 kusagoji = ["くさだよね知ってる", "草だよね知ってる", "誤字乙www", "誤字乙ニダwwwww", "誤字とかだっさwww", "誤字るとかダサすぎやろ...."] 165 await message.channel.send(random.choice(kusagoji)) 166 167 168 169 170 171 172client.run(token) 173

試したこと

トークン再発行や構文かくにんしたりライブラリをアンインストールしたりした

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

python,discord.pyなどすべて最新です。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Discord.pyのドキュメントは必ず目を通しておいたほうがよいですよ。

ドキュメントの このページ からの抜粋ですが、

python

1import discord 2 3class MyClient(discord.Client): 4 async def on_ready(self): 5 print('Logged on as {0}!'.format(self.user)) 6 7 async def on_message(self, message): 8 print('Message from {0.author}: {0.content}'.format(message)) 9 10client = MyClient() 11client.run('my token goes here')

このように、@client.eventデコレータは使わずに直接クラス内にon_messageメソッドなど定義します
(もちろんインスタンス自身を示す self は忘れずに)。
まずこのサンプルを元に書いてみてはいかがですか。

そもそも、細かい内部的な事情は省きますが、 @client.event は client というオブジェクトにイベント時の処理を登録するものです。
だから @client.eventをつけてしまえば MyClientクラス内であっても、イベント処理の登録先は client オブジェクトになってしまうでしょう。

投稿2021/03/29 13:54

coolwind0202

総合スコア708

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

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

退会済みユーザー

退会済みユーザー

2021/03/30 03:37

回答ありがとうございます。 試してみたらちゃんと動きました。 ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問