前提・実現したいこと
定期的にステータスを変えるプログラムをつくっていたところ、以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
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にした
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/04 11:29
2020/11/05 11:09
2021/06/21 11:16 編集
2021/06/21 11:19
2021/06/21 11:32