members_list   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 58
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 8
eloc 39
dl 0
loc 58
rs 10
c 0
b 0
f 0

1 Function

Rating   Name   Duplication   Size   Complexity  
A get_embed_description() 0 3 2

4 Methods

Rating   Name   Duplication   Size   Complexity  
A MemberList.__init__() 0 7 1
A MemberList.update() 0 13 1
A MemberList.remove() 0 8 2
A MemberList.add() 0 8 2
1
import discord
2
3
from app.exceptions import MemberAlreadyExists, MemberNotFound
4
from app.utils import word_capitalize
5
from app.classes.abc.message_manager import MessageManager
6
7
8
class MemberList(MessageManager):
9
10
    def __init__(self, message):
11
        self.message = message
12
        fields = message.embeds[0].fields
13
14
        self.member_list = {
15
            'people': fields[0].value.splitlines(),
16
            'company': fields[1].value.splitlines()
17
        }
18
19
    async def update(self):
20
        await self.message.edit(
21
            embed=discord.Embed(
22
                description=get_embed_description()
23
            ).add_field(
24
                name='__Adhérents__:',
25
                value='\n'.join(
26
                    map(str.capitalize, self.member_list['people'])
27
                )
28
            ).add_field(
29
                name='__Entreprises__:',
30
                value='\n'.join(
31
                    map(str.capitalize, self.member_list['company'])
32
                )
33
            )
34
        )
35
36
    async def add(self, member_name, member_type):
37
        member_name = word_capitalize(member_name)
38
39
        if member_name in self.member_list[member_type]:
40
            raise MemberAlreadyExists(member_name, member_type)
41
42
        self.member_list[member_type].append(member_name)
43
        await self.update()
44
45
    async def remove(self, member_name, member_type):
46
        member_name = word_capitalize(member_name)
47
48
        if member_name not in self.member_list[member_type]:
49
            raise MemberNotFound(member_name, member_type)
50
51
        self.member_list[member_type].remove(member_name)
52
        await self.update()
53
54
55
def get_embed_description() -> str:
56
    with open('assets/members_description.txt', encoding='utf-8') as f:
57
        return f.read()
58