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

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

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

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

Python

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

Q&A

解決済

1回答

1371閲覧

discordのbotのログイン時にbotが起動しました。というメッセージとプレイ中にしたいのですが。。

zettau

総合スコア14

Discord

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

Python

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

0グッド

0クリップ

投稿2021/08/28 19:46

discordbotのログイン時にある特定のチャンネルにbotが起動しました。というメッセージと同時にbotを~プレイ中にしたいんです。

python

1import discord 2 3client = discord.Client() 4@client.event 5# 今回はon_readyでログイン時に指定チャンネルにEmbedを送信させていますが、on_messageでユーザー入力に反応するときも要領は同じです。 6async def on_ready(): 7 embed = discord.Embed( # Embedを定義する 8 title="botを起動しました",# タイトル 9 color=0x00ff00, # フレーム色指定(今回は緑) 10 description="不具合、質問がある場合はdmに下さい。", # Embedの説明文 必要に応じて 11 url="https://example.com" # これを設定すると、タイトルが指定URLへのリンクになる 12 ) 13 embed.set_author(name=client.user, # Botのユーザー名 14 url="https://repo.exapmle.com/bot", # titleのurlのようにnameをリンクにできる。botのWebサイトとかGithubとか 15 icon_url=client.user.avatar_url # Botのアイコンを設定してみる 16 ) 17 18 embed.set_thumbnail(url="https://image.example.com/thumbnail.png") # サムネイルとして小さい画像を設定できる 19 20 embed.set_image(url="https://image.example.com/main.png") # 大きな画像タイルを設定できる 21 22 embed.add_field(name="フィールド1",value="値1") # フィールドを追加。 23 embed.add_field(name="フィールド2",value="値2") 24 25 embed.set_footer(text="made by nashiroaoi", # フッターには開発者の情報でも入れてみる 26 icon_url="https://dev.exapmple.com/profile.png") 27 28 channel = client.get_channel(881166734835470406) 29 30 await channel.send(embed=embed) # embedの送信には、embed={定義したembed名} 31 32@client.event 33async def on_message(message): 34 if message.author.bot: 35 pass 36 elif message.content.startswith('/ver'): 37 send_message = '> ver1.0' 38 await message.channel.send(send_message) 39 #2個目の処理はここから 40 #await message.channel.sendのように続く 41 42import discord 43 44client = discord.Client(activity=discord.Game(name='my game')) 45 46# or, for watching:# neme='内容', 47activity = discord.Activity(name='Prodeced by Senchan', type=discord.ActivityType.watching) 48client = discord.Client(activity=activity)

となりました。拾ったソースを繋ぎ合わせただけだと動かないみたいです。

下の~プレイ中となるプログラムは動いているのですが、上のプログラムが動いていないです(messegeが出ない、エラーも出ない)

何方も動かしたいのでご教授お願い致します。

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

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

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

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

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

udon-ken

2021/08/29 01:08

適当につなぎ合わせただけでは思った通りの動作はしないでしょう。 また、回答者の事を考えるなら(というか自分でデバッグする事も含めて)本質に関係無い部分は極力整理しましょう。 延々とembedを組み立てる部分は動作しない事の本質に関係ありません。 もし、「embedの組み立てが動作しない原因かもしれない、だから提示する必要がある」と考えるなら、手元でembedを使わずに単純なメッセージを送る事を試します。 それで、解決したならそれはembedが原因ですし、それでも変化ないならembedは関係ないとういう事なります。 それがデバッグというものです。 それと、そもそもの話しとして、このコードでボットがオンラインになってますか?? ならない気がしますが。
zettau

2021/08/29 08:07

すみませんでした。 オンラインにはなっており、プレイ中ともなっております。
udon-ken

2021/08/29 08:23

・・・自分の知っているディスコードのボットは少なくともトークンを渡さないとオンラインになりませんが・・・
zettau

2021/08/29 09:33

あ、すみません client.runのとこは載せてませんでした。。
zettau

2021/08/29 10:09

多分ですが、emdedが邪魔をしているみたいです。 プレイ中と表示するソースを消してみたら動きました。
guest

回答1

0

ベストアンサー

python

1import discord 2 3client = discord.Client() 4 5@client.event 6async def on_ready(): 7 embed = discord.Embed( # Embedを定義する 8 title="botを起動しました",# タイトル 9 color=0x00ff00, # フレーム色指定(今回は緑) 10 description="不具合、質問がある場合はdmに下さい。", # Embedの説明文 必要に応じて 11 url="https://example.com" # これを設定すると、タイトルが指定URLへのリンクになる 12 ) 13 14 embed.set_author( 15 name=client.user, # Botのユーザー名 16 url="https://repo.exapmle.com/bot", # titleのurlのようにnameをリンクにできる。botのWebサイトとかGithubとか 17 icon_url=client.user.avatar_url # Botのアイコンを設定してみる 18 ) 19 20 embed.set_thumbnail(url="https://image.example.com/thumbnail.png") # サムネイルとして小さい画像を設定できる 21 22 embed.set_image(url="https://image.example.com/main.png") # 大きな画像タイルを設定できる 23 24 embed.add_field(name="フィールド1",value="値1") # フィールドを追加。 25 embed.add_field(name="フィールド2",value="値2") 26 27 embed.set_footer( 28 text="made by nashiroaoi", # フッターには開発者の情報でも入れてみる 29 icon_url="https://dev.exapmple.com/profile.png" 30 ) 31 32 channel = client.get_channel(881166734835470406) # ここのチャンネルIDを間違えると送信できないので注意してください 33 await channel.send(embed=embed) 34 35 activity = discord.Activity(name='Prodeced by Senchan', type=discord.ActivityType.watching) 36 # watchingの部分を変えることで表示を変えることができます。 37 # playing: ○○をプレイ中, streaming: ○○を配信中, listening: ○○を再生中, watching: ○○を視聴中 38 await client.change_presence(activity=activity) 39 40@client.event 41async def on_message(message): 42 if message.author.bot: 43 return 44 if message.content.startswith('/ver'): # startswithにすることにより、/ver, /ver abc, /versionなどに反応します。 45 send_message = '> ver1.0' 46 await message.channel.send(send_message) 47 48client.run('ここにTOKENを入れる')

これで動くはずです。
ただし、discord.pyは開発停止になっているため、今から開発に使うのはおすすめできません。

投稿2021/08/30 16:29

編集2021/08/30 16:38
Awayume

総合スコア60

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

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

zettau

2021/08/30 16:37

試させて頂きました。 エラーこそでないものの、emdedもプレイ中も出ないようです。 次の投稿にてbotソース全文を投稿させて頂きますので、どこが間違っているかご指摘頂ければ幸いです
Awayume

2021/08/30 16:39

了解しました。
zettau

2021/08/30 16:47

新しくソース全文を投稿させて頂きました。 コピペを繋げた物で全然組み立て方も間違っていると思いますが、ご指摘頂けたら幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問