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

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

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

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

Python

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

Q&A

1回答

2494閲覧

discord.pyのエラー

takkunplay

総合スコア0

Discord

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

Python

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

0グッド

0クリップ

投稿2020/11/04 10:40

編集2020/11/04 11:31

前提・実現したいこと

定期的にステータスを変えるプログラムをつくっていたところ、以下のエラーメッセージが発生しました。

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

Unhandled exception in internal background task 'loop'. Traceback (most recent call last): File "/app/.heroku/python/lib/python3.8/site-packages/discord/ext/tasks/__init__.py", line 101, in _loop await self.coro(*args, **kwargs) File "ぐろば.py", line 49, in loop await client.change_status(activity=discord.Game(name='!^help|'+dt_now.strftime('%Y/%m/%d %H:%M'))) AttributeError: 'Client' object has no attribute 'change_status'

該当のソースコード

python

1ver="0.5 open beta" 2# インストールした discord.py を読み込む 3import discord,random,time,datetime,random 4from discord.ext import commands 5from discord.ext import tasks 6ux=time.time() 7client = discord.Client() 8# 自分のBotのアクセストークンに置き換えてください 9TOKEN = '---TOKEN---' 10ux=time.time() 11mode=0 12 13@client.event 14async def on_ready(): 15 # 起動したらターミナルにログイン通知が表示される 16 print('ログインしました') 17 18@client.event 19async def on_message(message): 20 21 if message.author.bot: 22 return 23 GLOBAL_CH_NAME = "maitolink-global" # グローバルチャットのチャンネル名 24 GLOBAL_WEBHOOK_NAME = "Mt-g webhook" # グローバルチャットのWebhook名 25 26 if message.channel.name == GLOBAL_CH_NAME: 27 # hoge-globalの名前をもつチャンネルに投稿されたので、メッセージを転送する 28 await message.delete() 29 30 channels = client.get_all_channels() 31 global_channels = [ch for ch in channels if ch.name == GLOBAL_CH_NAME] 32 33 for channel in global_channels: 34 ch_webhooks = await channel.webhooks() 35 webhook = discord.utils.get(ch_webhooks, name=GLOBAL_WEBHOOK_NAME) 36 37 if webhook is None: 38 # そのチャンネルに hoge-webhook というWebhookは無かったので無視 39 continue 40 await webhook.send(content=message.content, 41 username=message.author.name, 42 avatar_url=message.author.avatar_url_as(format="png")) 43@tasks.loop(seconds=0.1, minutes=0, hours=0, count=None, reconnect=True, loop=None) 44async def loop(): 45 global ux,mode,ver 46 print("loopers!!") 47 if mode==0 : 48 dt_now = datetime.datetime.now() 49 await client.change_status(activity=discord.Game(name='!^help|'+dt_now.strftime('%Y/%m/%d %H:%M'))) 50 if time.time()-ux>10 and mode==0: 51 nserver=len(client.guilds) 52 await client.change_status(activity=discord.Game(name='!^help|'+str(nserver)+"servers")) 53 ux=time.time() 54 mode=1 55loop.start() 56client.run(TOKEN)

###試したこと
change_statusをchange_change_presenceにした

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

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

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

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

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

guest

回答1

0

change_statusではなくchange_presenceですね。

投稿2020/11/04 10:56

sevenc-nanashi

総合スコア643

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

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

takkunplay

2020/11/04 11:29

試しましたが、同じようなエラーがでました。
sevenc-nanashi

2020/11/05 11:09

一応エラーメッセージください
gx1285

2021/06/21 11:16 編集

File "C:\Users\gxsann\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\client.py", line 1062, in change_presence await self.ws.change_presence(activity=activity, status=status, afk=afk) AttributeError: 'NoneType' object has no attribute 'change_presence' ログインはできますがステータスはありません
sevenc-nanashi

2021/06/21 11:19

client.runしたあとに実行しましたか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問