def test_getCurrentRolesSuccess(self): role1 = RoleUtil.updateRole(123, 321, "testing", "0x000345") role2 = RoleUtil.updateRole(123, 123, "onetwothree", "0x000543") roleList = RoleUtil.getCurrentRoles(123) assert len(roleList) == 2 assert roleList[0] == role1 assert roleList[1] == role2
async def initialize_roles(self, ctx: commands.Context, *argv): # if not await self.canUseCommand(ctx): # return msg = await ctx.channel.send('初始化身分組: KFP 預設...') for data in ROLE_DATA: for role_dic in data: role_matcher = role_dic['matcher'] role_name = role_dic['name'] roles: Role = self.findRole(ctx.guild.roles, role_matcher) if len(roles) > 0: await msg.edit(content=str(msg.content) + "\n{}已經存在... 合併現有資料".format(roles[0].name)) else: await msg.edit(content=str(msg.content) + "\n創建身分組{}... ".format(role_name)) role = await ctx.guild.create_role( name=role_name, permissions=Permissions(permissions=0), colour=Color(role_dic['color']), mentionable=False, hoist=False) await msg.edit(content=str(msg.content) + "完成".format(role_name)) if len(roles) > 0: role = roles[0] kfpRole: KfpRole = RoleUtil.updateRole(ctx.guild.id, role.id, role.name, role.color, role_dic["category"]) RoleUtil.updateKfpRoleLevel(kfpRole, role_dic['level']) await ctx.channel.send("身分組初始化完成.")
def test_updateRoleUpdateOldOne(self): RoleUtil.updateRole(123, 321, "testing", "0x000345") role: KfpRole = RoleUtil.updateRole(123, 321, "onetwothree", "0x000543") assert role.role_name == "onetwothree" assert role.color == "0x000543"
def test_updateRoleCreateNewOne(self): role: KfpRole = RoleUtil.updateRole(123, 321, "testing", "0x000345") assert role.guild_id == 123 assert role.role_id == 321 assert role.role_name == "testing" assert role.color == "0x000345"
def test_getRoleBeforeLevel(self): role1 = RoleUtil.updateRole(123, 321, "testing", "0x000345", Util.RoleCategory.KFP_DEFAULT) RoleUtil.updateKfpRoleLevel(role1, 10) role2 = RoleUtil.updateRole(123, 123, "onetwothree", "0x000543", Util.RoleCategory.KFP_DEFAULT) RoleUtil.updateKfpRoleLevel(role2, 20) role = RoleUtil.getKfpRolesBeforeLevel(123, 9) assert len(role) == 0 role = RoleUtil.getKfpRolesBeforeLevel(123, 11) assert role[0] == role1 role = RoleUtil.getKfpRolesBeforeLevel(123, 20) assert role[0] == role1 role = RoleUtil.getKfpRolesBeforeLevel(123, 21) assert role[0] == role2 assert role[1] == role1
def listRole(ctx: commands.Context, category: Util.RoleCategory): roleList = RoleUtil.getCurrentRoles(ctx.guild.id, category) if len(roleList) == 0: return f"{category}沒有檢查到任何身份組, 請執行 `!role init`\n" else: msg = "" for role in roleList: msg += f"{role.role_name}\n" msg += f" id: {role.role_id}\n" msg += f" 顏色: {role.color}\n" msg += f" 等級: {role.level}\n\n" return msg
async def __updateUserRole(self, guild: Guild, user: User, member: Member, rank: int, channelToUse: GuildChannel, internal: bool): if user: if member: newRoles = RoleUtil.getKfpRolesFromLevel(guild.id, rank) if len(newRoles) > 0: for newRole in newRoles: newGuildRole: Role = guild.get_role(newRole.role_id) if newGuildRole: if not newGuildRole in user.roles: # 用戶有新身份組 # 先移除所有不符合的身份組 oldRoles: KfpRole = RoleUtil.getCurrentRoles( guild.id, Util.RoleCategory(newRole.category)) if oldRoles: oldGuildRoles = [] for oldRole in oldRoles: guildRole = guild.get_role( oldRole.role_id) if guildRole and guildRole in user.roles: oldGuildRoles.append(guildRole) for oldGuildRole in oldGuildRoles: await user.remove_roles(oldGuildRole) # 添加新的身份組 await user.add_roles(newGuildRole) if internal: print( "adding role {} to member {} successed!" .format(newGuildRole.name, user.name)) else: embed = Embed() embed.description = '恭喜<@!{}> 成為 {}'.format( user.id, newGuildRole.name) await channelToUse.send(embed=embed)
async def reset_roles(self, ctx: commands.Context, *argv): # if not await self.canUseCommand(ctx): # return RoleUtil.wipeDataAndKeepTable() await ctx.channel.send('身分組資料庫清除完畢')
async def on_guild_role_update(before: Role, after: Role): RoleUtil.updateRole(before.guild.id, before.id, after.name, after.color) print(f"updating role with new name {after.name} and color {after.color}")
def test_getRoleFromLevel(self): role0 = RoleUtil.updateRole(123, 100, "other roles", "0x000345") RoleUtil.updateKfpRoleLevel(role0, 0) role1 = RoleUtil.updateRole(123, 321, "testing", "0x000345", Util.RoleCategory.KFP_DEFAULT) RoleUtil.updateKfpRoleLevel(role1, 10) role2 = RoleUtil.updateRole(123, 123, "onetwothree", "0x000543", Util.RoleCategory.KFP_DEFAULT) RoleUtil.updateKfpRoleLevel(role2, 20) role = RoleUtil.getKfpRoleFromLevel(123, 9) assert not role role = RoleUtil.getKfpRoleFromLevel(123, 11) assert role == role1 role = RoleUtil.getKfpRoleFromLevel(123, 20) assert role == role2
def test_getCurrentRolesSuccess_level(self): role1 = RoleUtil.updateRole(123, 100, "first", "0x000345", Util.RoleCategory.KFP_DEFAULT) RoleUtil.updateKfpRoleLevel(role1, 0) role2 = RoleUtil.updateRole(123, 101, "second", "0x000543", Util.RoleCategory.KFP_DEFAULT) RoleUtil.updateKfpRoleLevel(role2, 20) role3 = RoleUtil.updateRole(123, 102, "third", "0x000543", Util.RoleCategory.KFP_DEFAULT) RoleUtil.updateKfpRoleLevel(role3, 40) role4 = RoleUtil.updateRole(123, 103, "fourth", "0x000543", Util.RoleCategory.KFP_DEFAULT) RoleUtil.updateKfpRoleLevel(role4, 60) role5 = RoleUtil.updateRole(123, 104, "fifth", "0x000543", Util.RoleCategory.KFP_DEFAULT) RoleUtil.updateKfpRoleLevel(role5, 80) role6 = RoleUtil.updateRole(123, 105, "sixth", "0x000543", Util.RoleCategory.KFP_DEFAULT) RoleUtil.updateKfpRoleLevel(role6, 100) role = RoleUtil.getKfpRoleFromLevel(123, 80) assert role == role5
def test_getCurrentRolesEmpty(self): roleList = RoleUtil.getCurrentRoles(123) assert len(roleList) == 0
def test_updateKfpRoleLevelSuccess(self): RoleUtil.updateRole(123, 321, "testing", "0x000345") role: KfpRole = RoleUtil.getRole(123, 321) RoleUtil.updateKfpRoleLevel(role, 20) assert role.level == 20
def test_updateKfpRoleLevelZero(self): RoleUtil.updateRole(123, 321, "testing", "0x000345") role: KfpRole = RoleUtil.getRole(123, 321) assert role.level == 0