@marinsentyo_25

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

DiscordBOTを動かすためのコード修正

解決したいこと

どの部分のプログラムコードが間違っているのかを知りたいです。

実際に書いているプログラムコード

```import tweepy
import requests
import json
from config import CONFIG

auth = tweepy.OAuthHandler("APIKey", "APIKey Secret")
auth.set_access_token("Access Token", "Access Token Secret")

APIインスタンスを作成

api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_limit_notify=True)

webhook_url = CONFIG[""]

フォローしているユーザーのwatch_listを作成

followee_ids = api.friends_ids(screen_name=api.me().screen_name)
watch_list = [str(user_id) for user_id in followee_ids]
watch_list.append(str(api.me().id))

デフォルトのアクセスレベルではfollowには5000人まで指定できるため

assert(len(watch_list) <= 5000)

class MyStreamListener(tweepy.StreamListener):
def on_status(self, status):
# @ツイートは表示しない.
if "@" in status.text:
pass
else:
# ユーザーの情報を取得
user_id = status.user.id
user = api.get_user(user_id)
main_content = {
'username': status.user.name,
'avatar_url': user.profile_image_url_https,
'content': status.text
}
headers = {'Content-Type': 'application/json'}
response=requests.post(webhook_url, json.dumps(main_content), headers=headers)

        print('-------------------------------------------')
        print('name:' + status.user.name)
        print(status.text)

myStreamListener = MyStreamListener()
myStream = tweepy.Stream(auth=api.auth, listener=myStreamListener)
myStream.filter(follow=watch_list)```

エラーコード

PS C:\Users\touky> & C:/Users/touky/AppData/Local/Programs/Python/Python310/python.exe c:/Users/touky/Desktop/alfareactorBOT/twi-cord.py
Traceback (most recent call last):
File "c:\Users\touky\Desktop\alfareactorBOT\twi-cord.py", line 9, in <module>
api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_limit_notify=True)
TypeError: API.__init__() got an unexpected keyword argument 'wait_on_limit_notify'

画像

一部加工させていただきました。
twi-cord.py - Visual Studio Code 2022_02_19 16_19_24.png

自分で試したこと

Qiita以外のネット記事等も参考に4つのKey("APIKey", "APIKey Secret")("Access Token", "Access Token Secret")を再発行し記載したり(書き直し)、+部分を削除したりしました。

0 likes

1Answer

「自分で試したこと」の欄に今出ているエラー

PS C:\Users\touky> & C:/Users/touky/AppData/Local/Programs/Python/Python310/python.exe c:/Users/touky/Desktop/alfareactorBOT/twi-cord.py
Traceback (most recent call last):
File "c:\Users\touky\Desktop\alfareactorBOT\twi-cord.py", line 9, in
api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_limit_notify=True)
TypeError: API.__init__() got an unexpected keyword argument 'wait_on_limit_notify'

への対処が示されておりませんね..., 私としては,こういったエラーについて自分で調べて対処いただいて欲しいと思って,先の解答といたしました.
今書かれている「自分で試したこと」の欄は,既に済んだことであり,今出ているエラーへの本質的な答えに何ら影響するものではありません.

「自分で試したこと」の欄は,別の質問・解答で解決済みのことを書くのではなく,直面している問題やエラーに対する,あなたの行動記録を述べてください.

もう一度,初回の質問・解答に振り返って,あなたが取るべき同一の手順を踏んでみようと思います.

翻訳する(DeepL)

エラー文

TypeError: API.__init__() got an unexpected keyword argument 'wait_on_limit_notify'

DeepLにて翻訳しました.

https://www.deepl.com/translator#en/ja/TypeError%3A%20API.__init__()%20got%20an%20unexpected%20keyword%20argument%20'wait_on_limit_notify'

結果は,

TypeError: API.__init__() が予期しないキーワード引数 'wait_on_limit_notify' を受け取りました。

になりました.どうやら「予期しないキーワード引数」を受け取ったようです.
どこで受け取ったかはエラー文から考えるに「File "c:\Users\touky\Desktop\alfareactorBOT\twi-cord.py", line 9, in <module> api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_limit_notify=True)」という場所で,「予期しないキーワード引数」を受け取ったということでしょうか.line 9とありますので,9行目を抜粋してみます.

twi-code.pyの9行目
api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_limit_notify=True)

確かに,wait_on_limit_notifyが記述されていますね,しかしこれは予期しないキーワード引数というエラーで指摘されています.

こういう場合は,書き間違いの可能性があります.貴方が参考にされた元記事の方をよく見てみましょう.
wait_on_limit_notify = Trueではなく,wait_on_rate_limit_notify = Trueと記述されていますね.どうやらtweepy.APIにはwait_on_rate_limit_notifyであればキーワード引数と受け取ることができるようです.

検索する

エラー文のうち下2行をGoogle検索にかけました.

一番上に表示されたstackoverflowの解答がどうやら的を得ている回答をしてそうです.

出ているエラーは貴方のものとは少し違って,

__init__() got an unexpected keyword argument 'sleep_on_rate_limit'

らしいですが,本質的にはどちらも同じです.tweepy.APIにはsleep_on_rate_limitというキーワード引数が存在しないということです.

解決法

解決するためには,存在するキーワード引数を指定してあげるか,存在しないならそもそも指定しないという選択が必要です.

wait_on_limit_notifyの項を削除するか,tweepy.APIに用意されているキーワード引数の指定をするようにしてください.

実際のTweePyの公式ドキュメントを参考にするとどうやらwait_on_rate_limitは存在するものの,wait_on_rate_limit_notifyは存在しないようです.元記事の方すら間違っている可能性があります.

余談

とうとうソースコードを画像ではなく,記事に貼り付けていただけるようになったのはとても嬉しいことですが,コードブロックの書式

(一行の余白)
```言語名:タイトル
コード本文
```

から外れて,おかしなことになっています.
質問の投稿の前後に,きちんと表示されているかの確認をお願いします.
また,エラーコードも同様に,コードブロックの中に収めていただけると幸いです.

0Like

Comments

  1. @marinsentyo_25

    Questioner

    わかりました。記載されている解決策をやってみましたが繰り返しエラーが出ます。諦めて別のソースコードを使ってみます。ありがとうございます。

Your answer might help someone💌