iT邦幫忙

2021 iThome 鐵人賽

DAY 26
0
AI & Data

建立FF14資訊Discord chatbot系列 第 26

[DAY 26]隨機組隊功能

公會成員平均在線成員人數有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))

呈現結果如下


上一篇
[DAY 25]建立bot抽籤功能
下一篇
[DAY 27]推特推送到discord頻道
系列文
建立FF14資訊Discord chatbot30

尚未有邦友留言

立即登入留言