こんにちは
discord.pyで2つbotを喋らせる?(コード見れば何やりたいかわかるはず)ようにしたいんですけど
cmdのほうだとログインが成功した時のメッセージが出るのに反応せずテキストエディタでエラーが出てるので見たらasyncが既に定義されていると出て困ってます
1つめの@client.eventは反応するのに2つめ3つめは反応しません
python
1import discord 2 3import time 4from time import sleep 5import threading 6 7import urllib.request 8import json 9import re 10 11 12client = discord.Client() 13 14channel = client.get_channel('568482185032630284') 15 16citycodes = { 17 "土浦": '080020', 18 "水戸": '080010', 19 "札幌": '016010', 20 "仙台": '040010', 21 "東京": '130010', 22 "横浜": '140010', 23 "名古屋": '230010', 24 "大阪": '270000', 25 "広島": '340010', 26 "福岡": '400010', 27 "鹿児島": '460010', 28 "那覇": '471010' 29} 30 31 32@client.event 33async def on_ready(): 34 print('ok') 35 36 37 38@client.event 39async def on_message(message): 40 if message.content.startswith('!join'): 41 role = discord.utils.get(message.author.server.roles, name="仲間") 42 await client.add_roles(message.author, role) 43 await client.send_message(message.channel, f'{message.author.mention} 君も仲間だよ!!') 44 45@client.event 46async def on_message(message): 47 if message.content.startswith('!text'): 48 channel_name = message.content.split()[1] 49 await client.create_channel(message.server, channel_name, type=discord.ChannelType.text) 50 await client.send_message(message.channel, f'{channel_name} チャンネルを作成しました') 51 52@client.event 53async def on_message(message): 54 if message.content.startswith('!voice'): 55 channel_name = message.content.split()[1] 56 await client.create_channel(message.server, channel_name, type=discord.ChannelType.voice) 57 await client.send_message(message.channel, f'{channel_name} チャンネルを作成しました') 58 59@client.event 60async def on_message(message): 61 if message.content.startswith('!delch'): 62 compatible_channel = [c for c in message.server.channels if message.channel.name == c.name and c.type == discord.ChannelType.voice][0] 63 await client.delete_channel(message.channel) 64 await client.delete_channel(compatible_channel) 65 66@client.event 67async def on_message(message): # 発言を受信したら処理をする関数 68 if message.author != client.user: 69 70 reg_res = re.compile(u"Bot君、(.+)の天気は?").search(message.content) 71 if reg_res: 72 73 if reg_res.group(1) in citycodes.keys(): 74 75 citycode = citycodes[reg_res.group(1)] 76 resp = urllib.request.urlopen('http://weather.livedoor.com/forecast/webservice/json/v1?city=%s'%citycode).read() 77 resp = json.loads(resp.decode('utf-8')) 78 79 msg = resp['location']['city'] 80 msg += "の天気は、\n" 81 for f in resp['forecasts']: 82 msg += f['dateLabel'] + "が" + f['telop'] + "\n" 83 msg += "です。" 84 85 await client.send_message(message.channel, message.author.mention + msg) 86 87 else: 88 await client.send_message(message.channel, "そこの天気はわかりません...")
エラーメッセージを見ないとなんともですが、とりあえずPython3.6でやってみてください。
https://teratail.com/help/question-tips#questionTips3-4-2 より。 表示されたエラーメッセージをそのままコピー&ペーストしましょう。自分でタイプしなおしたり、自分で解釈・要約しようとしてはいけません。
def on_message がたくさんあるのが気になりました。
discord.py をよく知らないのですが、@client.event デコレータをつけてると、同じスコープ内で同名の関数を定義することができるのですか?
あ、私の勘違いですね、すみません。
質問をするということは相手の時間を取るということです
エラーメッセージも貼らずに自己解釈されるのならば質問する必要はないのでは?
また、ソースコードが全てむちゃくちゃです