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

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

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

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

Python

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

Q&A

1回答

2239閲覧

discordのbotを作っています。エラーを吐くので原因を教えてほしいです

zettau

総合スコア14

Discord

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

Python

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

0グッド

0クリップ

投稿2021/08/31 15:09

discord.pyにてdiscord botを作成しようと思っています。
やりたいことは/verでボットのバージョンの表記(botのアプデなどをわかりやすくする為)
Twitterであるハッシュタグをサーチし、discordのテキストチャンネルに貼る。
botの起動時のemded
プレイ中
エラーこそ出ませんが、コマンドもすべて出ず、emdedやプレイ中も出ませんでした。

下がコードになります。

python

1import discord # インストールした discord.py 2import datetime # 滞在時間計測用 3import asyncio 4import twitter 5import sys 6from googlesearch import search 7import tweepy 8import time 9import discord 10import asyncio 11 12### Twitter API KEY 13Consumer_key = '' 14Consumer_secret = '' 15Access_token = '' 16Access_secret = '' 17 18### TwitterAPI認証用関数 19def authTwitter(): 20 auth = tweepy.OAuthHandler(Consumer_key, Consumer_secret) 21 auth.set_access_token(Access_token, Access_secret) 22 api = tweepy.API(auth, wait_on_rate_limit = True) # API利用制限にかかった場合、解除まで待機する 23 return(api) 24 25### Tweetの検索結果を標準出力 26def printTweetBySearch(s): 27 api = authTwitter() # 認証 28 29 for i in range(1000): 30 tweets = tweepy.Cursor(api.search, q = "キーワード", \ 31 32 tweet_mode = 'extended', \ 33 lang = 'ja'.items()) 34 time.sleep(1) 35 # 日本のツイートのみ取得 36 37 for tweet in tweets: 38 tweeta = "https://" + "twitter.com/" + tweet.user.screen_name + "/" + tweet.id 39 return "https://twitter.com/" + tweet.user.screen_name + "/" + tweet.id 40 41 42 43def main(): 44 printTweetBySearch('python exclude:retweets') 45 46if name == "main": 47 main() 48 49client = discord.Client() 50 51@client.event 52async def on_message(msg): 53 if msg.content == ".twi": 54 await message.channel.send(printTweetBySearch.tweet()) 55 56client.run("token hereeeee") 57import tweepy 58import time 59import discord 60 61### Twitter API KEY 62Consumer_key = '' 63Consumer_secret = '' 64Access_token = '' 65Access_secret = '' 66 67### TwitterAPI認証用関数 68def authTwitter(): 69 auth = tweepy.OAuthHandler(Consumer_key, Consumer_secret) 70 auth.set_access_token(Access_token, Access_secret) 71 api = tweepy.API(auth, wait_on_rate_limit = True) # API利用制限にかかった場合、解除まで待機する 72 return(api) 73 74### Tweetの検索結果を標準出力 75def printTweetBySearch(s): 76 api = authTwitter() # 認証 77 78 for i in range(1000): 79 tweets = tweepy.Cursor(api.search, q = "キーワード", \ 80 81 tweet_mode = 'extended', \ 82 lang = 'ja'.items()) 83 time.sleep(1) 84 # 日本のツイートのみ取得 85 86 for tweet in tweets: 87 tweeta = "https://" + "twitter.com/" + tweet.user.screen_name + "/" + tweet.id 88 return tweeta 89 90 91def main(): 92 printTweetBySearch('python exclude:retweets') 93 94if name == "main": 95 main() 96 97client = discord.Client() 98 99@client.event 100async def on_ready(): 101 for i in range(1000): 102 channel = client.get.channel(キーワードのやつのチャンネルid) 103 tweeets = printTweetBySearch 104 await channel.send(tweeets) 105 asyncio.sleep(1) 106 print('Logged in as') 107 print(client.user.name) 108 print(client.user.id) 109 print('------') 110 111 embed = discord.Embed( # Embedを定義する 112 title="botを起動しました",# タイトル 113 color=0x00ff00, # フレーム色指定(今回は緑) 114 description="不具合、質問がある場合はdmに下さい。", # Embedの説明文 必要に応じて 115 url="https://example.com/" # これを設定すると、タイトルが指定URLへのリンクになる 116 ) 117 118 embed.set_author( 119 name=client.user, # Botのユーザー名 120 url="https://repo.exapmle.com/bot", # titleのurlのようにnameをリンクにできる。botのWebサイトとかGithubとか 121 icon_url=client.user.avatar_url # Botのアイコンを設定してみる 122 ) 123 124 embed.set_thumbnail(url="https://image.example.com/thumbnail.png%22) 125 126 embed.set_image(url="https://image.example.com/main.png%22) # 大きな画像タイルを設定できる 127 128 embed.add_field(name="フィールド1",value="値1") # フィールドを追加。 129 embed.add_field(name="フィールド2",value="値2") 130 131 embed.set_footer( 132 text="Prodeced by Senchan", # フッターには開発者の情報でも入れてみる 133 icon_url="https://dev.exapmple.com/profile.png" 134 ) 135 136 channel = client.get_channel(881166734835470406) # ここのチャンネルIDを間違えると送信できないので注意してください 137 await channel.send(embed=embed) 138 139 await bot.change_presence(activity=discord.Activity(type=discord.ActivityType.listening, name="Produced by せんちゃん")) 140@client.event 141async def on_message(message): 142 if message.content.startswith("/ver"): 143 await message.channel.send("> ver1.0") 144 145token = "" 146client.run(token)

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

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

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

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

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

AbeTakashi

2021/08/31 15:49

これって自分で書かれたプログラムですか? そうであれば、もう少し調べようがある気もしますし・・・  まずは原因の切り分けとして、プログラムの一部だけを設置して、それが正しく動くかどうか試してみる、エラーログがどうなってるか確かめる、それが動けば次の処理を入れてみるみたいな感じで、徐々に検証を進めていけば、原因がみつかるのではないでしょうか? いきなりこんな長いプログラムを設置して「動かない、分からない」となれば、「丸投げの質問・・・」という指摘がきても仕方ないかな?とも思います。
y_waiwai

2021/08/31 22:08

エラーが出たなら、エラーメッセージを提示しましょう エラーメッセージは、いらぬ翻訳省略しないで、出たそのママをコピペで提示してください
zettau

2021/09/01 01:05

emdedの部分は拾いました。 Twitterの部分は私が描きました。
AbeTakashi

2021/09/01 01:22

このソースコードをすべて検証して、わざわざ動かない場所を探してくれる回答者はいないんじゃないですかね? おそらく現状のままだと回答は出ない気がします。なので、せめて動かない箇所を自分で特定してから質問した方が良いと思います。あと、タイトルではエラーを吐くとなっているのに、質問文ではエラーは出ないとなっているのもちょっと変ですね。
zettau

2021/09/01 03:52

すみませんでした。 訂正します discordにてコマンドを打つとエラーを吐きます。 後程エラーも編集し載せます
guest

回答1

0

途中にclient.run()があります。
runしてしまうと、それよりも下のコードは実行されません。

投稿2021/09/01 04:15

Awayume

総合スコア60

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

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

zettau

2021/09/01 04:20

cliunt.run消しました。 その後runすると Ignoring exception in on_ready Traceback (most recent call last): File "C:\Users\せんちゃん\PycharmProjects\pythonProject1\venv\lib\site-packages\discord\client.py", line 343, in _run_event await coro(*args, **kwargs) File "C:/Users/せんちゃん/PycharmProjects/pythonProject1/bot.py", line 98, in on_ready channel = client.get.channel(882264957339705435) AttributeError: 'Client' object has no attribute 'get' このerrorが出ます。
Waki285

2021/09/01 05:32

client.get.channelを client.get_channelにしてみてはどうでしょう
ysmreg

2022/03/31 13:31

channel = client.get.channel(882264957339705435) を channel = client.fetch_channel(882264957339705435) に変えます
ysmreg

2022/03/31 23:09

修正します channel = await client.fetch_channel(882264957339705435) です
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問