公會成員平均在線成員人數有90位,但實際在discord頻道活躍人數不到20位
為了讓非活躍在線人數能參與進來
我打算做一個隨機組隊功能
FF14的副本主要有三種,24人副本、8人副本、4人副本
所以除了隨機抽人外還需要隨機抽副本種類
24人副本是8人隊伍乘三所以就不列進副本種類名單
做法跟昨天的抽籤功能類似,就是輸出會長得不太一樣
程式碼如下:
from discord.ext import commands
from core.classes import Cog_Extension
import numpy as np
class random_team(Cog_Extension):
@commands.command()
async def rteam(self,ctx):
#獲取在線名單
guild = self.bot.get_guild(int(self.GUILDID_TOKEN))
member_list = []
for user in guild.members:
if str(user.status) != "offline":
# print(user)
member_list.append(f"{user.display_name}")
raid_list = [4,8]
# print(guild.members)
#先抽副本人數
member_count = list(np.random.choice(raid_list, size=1, replace=False, p=None))[0]
#再抽參與人員名單
team_list = list(np.random.choice(member_list, size=member_count, replace=False, p=None))
if member_count == 4:
embed=discord.Embed(title="四人副本",
color=discord.Color.red())
embed.add_field(name="?️MT",
value=team_list[0],
inline=False)
embed.add_field(name="⚔️D1",
value=team_list[1],
inline=True)
embed.add_field(name="⚔️D2",
value=team_list[2],
inline=True)
embed.add_field(name="?H1",
value=team_list[3],
inline=False)
elif member_count == 8:
embed=discord.Embed(title="八人副本",
color=discord.Color.red())
embed.add_field(name="?️",
value='坦職',
inline=True)
embed.add_field(name="MT",
value=team_list[0],
inline=True)
embed.add_field(name="ST",
value=team_list[1],
inline=True)
embed.add_field(name="⚔️",
value='輸出',
inline=True)
embed.add_field(name="D1",
value=team_list[2],
inline=True)
embed.add_field(name="D2",
value=team_list[3],
inline=True)
embed.add_field(name="⚔️",
value='輸出',
inline=True)
embed.add_field(name="D3",
value=team_list[4],
inline=True)
embed.add_field(name="D4",
value=team_list[5],
inline=True)
embed.add_field(name="?",
value='補師',
inline=True)
embed.add_field(name="H1",
value=team_list[6],
inline=True)
embed.add_field(name="H2",
value=team_list[7],
inline=True)
await ctx.message.reply(embed=embed)
def setup(bot):
bot.add_cog(random_team(bot))
呈現結果如下