回答編集履歴
3
例の追加
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
非同期
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
書き直し。
test
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
+
`vlist チャンネルメンション` で発火します。
|
1
|
-
|
2
|
+
変えたい場合は関数の中でchannelがVCチャンネル型になるようにしてください。(そうしないとチャンネルのIDが取得できません。)
|
2
3
|
|
3
|
-
|
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
|
+
```
|