回答編集履歴

3

例の追加

2022/09/04 09:34

投稿

peco_2282
peco_2282

スコア411

test CHANGED
@@ -31,6 +31,10 @@
31
31
  embed = discord.Embed(title="ユーザー情報", description=description)
32
32
  await ctx.send(embed=embed)
33
33
  ```
34
+
35
+ 例:
36
+ ![サンプル](https://gyazo.com/c8caf058b29598cea1f9993cf085c445.png)
37
+
34
38
  ---
35
39
  ### メンバーが離れた時のアクション。
36
40
 

2

非同期

2022/09/04 09:31

投稿

peco_2282
peco_2282

スコア411

test CHANGED
@@ -1,8 +1,8 @@
1
1
  `vlist チャンネルメンション` で発火します。
2
2
  変えたい場合は関数の中でchannelがVCチャンネル型になるようにしてください。(そうしないとチャンネルのIDが取得できません。)
3
3
 
4
- (もしチャンネルIDから取得したい場合は `channel = bot.get_channel(int(channel))` をしてください。名前からとることもできますが省略。)
4
+ (もしチャンネルIDから取得したい場合は `channel = await bot.get_channel(int(channel))` をしてください。名前からとることもできますが省略。)
5
-
5
+ 以下サンプルコード。
6
6
  ```py
7
7
  @bot.command(name="vlist")
8
8
  async def show_profile_in_vc_channel(ctx: commands.Context, channel: discord.VoiceChannel = None):

1

書き直し。

2022/09/04 09:29

投稿

peco_2282
peco_2282

スコア411

test CHANGED
@@ -1,6 +1,7 @@
1
+ `vlist チャンネルメンション` で発火します。
1
- vc_members バー、_listが_id, userid, textの入った辞書のリストになていま
2
+ 変えたい場合は関数の中でchannelVCチャネル型になるようにしくださ。(そうしないとチャンネルのIDが取得できせん)
2
3
 
3
- for文でり出すなどして使ってください。
4
+ (もしチャンネルIDからたい場合は `channel = bot.get_channel(int(channel))` をしてください。名前からとることもできますが省略。)
4
5
 
5
6
  ```py
6
7
  @bot.command(name="vlist")
@@ -14,4 +15,34 @@
14
15
  # 登録されているすべてのユーザー情報が返ります。
15
16
  result = profiles_collection.find()
16
17
  _list = await result.to_list(None)
18
+ _match = []
19
+
20
+ for member in vc_members:
21
+ for data in _list:
22
+
23
+ # もしボイスチャンネルのメンバーと登録されているユーザーIDがあれば、
24
+ if member.id == int(data["userid"]):
25
+
26
+ # _matchリストにメンション、表示するテキストの入ったタプルが入ります。
27
+ # また、Dict.get()では、第2引数でキーがなかった時のデフォルトを設定することができます。
28
+ _match.append((member.mention, data.get("text", "該当なし")))
29
+
30
+ description = "\n".join(f"{m[0]}: {m[1]}" for m in _match) or "該当なし"
31
+ embed = discord.Embed(title="ユーザー情報", description=description)
32
+ await ctx.send(embed=embed)
17
33
  ```
34
+ ---
35
+ ### メンバーが離れた時のアクション。
36
+
37
+ ```py
38
+ @bot.event
39
+ async def on_member_remove(member: discord.Member):
40
+ result = await profiles_collection.delete_one({
41
+ "userid": member.id
42
+ })
43
+ # メッセージを送りたいチャンネルを指定してください。
44
+ channel = ...
45
+ if result.deleted_count == 0:
46
+ return await channel.send("見つかりませんでした。")
47
+ await channel.send("削除しました。")
48
+ ```