Discord.pyで天気を表示するBOTを作成しているのですが、
実行するとタイトルのエラーコードが表示され実行できません。
どうすればよいでしょうか。
発生している問題・エラーメッセージ
Ignoring exception in on_message Traceback (most recent call last): File "C:\Users*\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\client.py", line 312, in _run_event await coro(*args, **kwargs) File "C:\Users*\Downloads\天気.py", line 40, in on_message resp = json.loads(resp.decode('utf-8')) File "C:\Users*\AppData\Local\Programs\Python\Python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "C:\Users*\AppData\Local\Programs\Python\Python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "C:\Users*\AppData\Local\Programs\Python\Python38\lib\json\decoder.py", line 355, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 2 column 1 (char 4)
該当のソースコード
python
1#coding=SHIFT-JIS 2import discord 3import urllib.request 4import json 5import re 6 7client = discord.Client() 8 9citycodes = { 10 "土浦": '080020', 11 "水戸": '080010', 12 "札幌": '016010', 13 "仙台": '040010', 14 "東京": '130010', 15 "横浜": '140010', 16 "名古屋": '230010', 17 "大阪": '270000', 18 "広島": '340010', 19 "福岡": '400010', 20 "鹿児島": '460010', 21 "那覇": '471010' 22} 23 24@client.event 25async def on_ready(): 26 print("天気") 27 print(discord.__version__) 28 29@client.event 30async def on_message(message): 31 if message.author != client.user: 32 33 reg_res = re.compile(u".w (.+)").search(message.content) 34 if reg_res: 35 36 if reg_res.group(1) in citycodes.keys(): 37 38 citycode = citycodes[reg_res.group(1)] 39 resp = urllib.request.urlopen('http://weather.livedoor.com/forecast/webservice/json/v1?city=%s'%citycode).read() 40 resp = json.loads(resp.decode('utf-8')) 41 42 msg = resp['location']['city'] 43 msg += "の天気は、\n" 44 for f in resp['forecasts']: 45 msg += f['dateLabel'] + "が" + f['telop'] + "\n" 46 msg += "です。" 47 48 await client.send_message(message.channel, message.author.mention + msg) 49 50 else: 51 await client.send_message(message.channel, "対応地域ではありませんでした。\n下記リストから再度検索を行ってください。\n```土浦/水戸/札幌/仙台/東京/横浜/名古屋/大阪/広島/福岡/鹿児島/那覇```")
試したこと
respに代入しているリンクが存在していなかったため、別のリンクなどを使用しましたが対応できませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。