前提・実現したいこと
コマンドを実行した際に新しいチャンネルと新しい役職を作りチャンネルの権限設定を同時に行うを書きました。
発生している問題・エラーメッセージ
コードを実行した際にこのようになります。 チャンネルを一つだけ作成したいのですが3つ作られてしまう 実際には #チャンネルをさくせいしました。 @roleを作成しました。 権限設定を行いました。 と返してほしいのですがね
該当のソースコード
py
1@client.event 2async def on_message(message): 3 if message.content.startswith('/open'): 4 category_id = xxxxxxxxxxxxxxxxxxx 5 category = message.guild.get_channel(category_id) 6 cmd_search = str(message.content) 7 ch_name = cmd_search[6:] 8 new_channel = await category.create_text_channel(name= ch_name) 9 reply = f'{new_channel.mention} を作成しました' 10 await message.channel.send(reply) 11 guild = message.guild 12 role = await guild.create_role(name=ch_name) 13 await new_channel.set_permissions(role,read_messages=True,send_messages=True) 14 reply2 = f'{role.mention} を作成しました' 15 await message.channel.send(reply2) 16 await message.channel.send('権限設定を行いました')
試したこと
サイトをあちこち回りました
が何をすればいいのか全く...
ですが/ping を実行すると/pongが返ってくるようにするコードを書き実行したところ
1回のみの反応でした。
多重ログインではないです
補足情報
pythonV3.8.1 ブランチrewrite
###書き直したコード(追加あり)
py
1global ch_flag 2ch_flag = True 3@client.event 4async def on_message(message): 5 if message.content.startswith('/open') and ch_flag == True: 6 ch_flag = False 7 category_id = xxxxxxxxxxxxxxxxx 8 category = message.guild.get_channel(category_id) 9 cmd_search = str(message.content) 10 ch_name = cmd_search[6:] 11 new_channel = await category.create_text_channel(name= ch_name) 12 reply = f'{new_channel.mention} を作成しました' 13 await message.channel.send(reply) 14 guild = message.guild 15 role = await guild.create_role(name=ch_name) 16 await new_channel.set_permissions(role,read_messages=True,send_messages=True) 17 reply2 = f'{role.mention} を作成しました' 18 await message.channel.send(reply2) 19 await message.channel.send('権限設定を行いました') 20 await asyncio.sleep(0.2) 21 ch_flag = True 22 category_id_2 = xxxxxxxxxxxxxxxxxxxxxxxx 23 category_2 = message.guild.get_channel(category_id_2) 24 new_channel_2 = await category_2.create_text_channel(name = ch_name + '用') 25 if message.content == "/ping": 26 await message.channel.send("pong!") 27 if message.author.bot: 28 return``` 29 30です
あなたの回答
tips
プレビュー