実現したいこと
Discord.pyでチケットシステムを構築しようとしているのですが、
チケットを作る際に新しく作成したチャンネルのパーミッションの設定を行いたいのですが、ターゲットとするユーザのIDの取得方法について困っています。
そのユーザーIDは、Discordのチャンネルに設置したボタンを押した人から取得することを考えています。
発生している問題・エラーメッセージ
Ignoring exception in on_socket_response Traceback (most recent call last): File "C:\Users\~\Python\Python310\lib\site-packages\discord\client.py", line 343, in _run_event await coro(*args, **kwargs) File "C:\Users\~\Python\Python310\lib\site-packages\discord_buttons_plugin\__main__.py", line 17, in soclistener await self.emit(data["data"]["custom_id"], data) File "C:\Users\~\Python\Python310\lib\site-packages\discord_buttons_plugin\__main__.py", line 37, in emit await i(comp) File "C:\Users\~\bot.py", line 50, in start mem = await client.fetch_user(ctx.user.id) AttributeError: 'InteractionContext' object has no attribute 'user'
該当のソースコード
Python
1 2async def create_channel(ctx, channel_name): 3 category_id = ctx.channel.category_id 4 category = ctx.guild.get_channel(category_id) 5 new_channel = await category.create_text_channel(name=channel_name) 6 7 return new_channel 8@buttons.click 9async def start(ctx): 10 dt_now = datetime.datetime.now() 11 time = dt_now.strftime('%Y%m%d%H%M%S') 12 name = '????チケット' + time 13 14 #チャンネルを新規作成 15 newc = await create_channel(ctx, channel_name= name) 16 cid = newc.id 17 c = client.get_channel(cid) 18 19 # ターゲットとするメンバーを取得 20 mem = await client.fetch_user(ctx.user.id) 21 22 # 変更する 23 await c.set_permissions(member, send_messages=True, read_messages=True) 24 25@client.command() 26async def tset(message): 27 if message.author.bot: 28 return 29 await message.channel.send(embed=tmes) 30 await buttons.send( 31 content = "↓↓↓", 32 channel = message.channel.id, 33 components = [ 34 ActionRow([ 35 Button( 36 label="????チケット", 37 style=ButtonType().Primary, 38 custom_id="start" 39 ) 40 ]) 41 ] 42 ) 43 44
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/07 04:28
2021/12/12 08:29 編集
2021/12/12 07:27
2021/12/12 08:32 編集