Passed
Push — master ( 58f506...9afc6c )
by Cyb3r
01:28 queued 11s
created

cogs.events.EventsCog.on_member_remove()   A

Complexity

Conditions 2

Size

Total Lines 20
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 9
nop 2
dl 0
loc 20
rs 9.95
c 0
b 0
f 0
1
"""Cog that manages events"""
2
import discord
3
from discord.ext import commands
4
import utils
5
6
7
class EventsCog(commands.Cog, name="Events"):
8
    """EventsCog
9
    ---
10
11
    Cog that manages the events
12
13
    Events:
14
    ---
15
        `on_member_join`: Triggered when a new member joins.
16
            The bot will send them a welcome PM.
17
18
        `on_member_remove`: Triggered when a member leaves.
19
            A message will be send to the loggin admin channels.
20
21
    Arguments:
22
    ---
23
        bot {discord.commands.Bot} -- The bot
24
    """
25
    def __init__(self, bot):
26
        self.bot = bot
27
28
    @commands.Cog.listener()
29
    async def on_member_join(self, member: discord.Member):
30
        """on_member_join
31
        ---
32
33
        Event is triggered when a new member joins. The member recives a welcome PM.
34
        The message content is pulled from the messages table and it needs a name of "welcome".
35
        Doesn't use utils.make_embed due to not having context.
36
37
        Arguments:
38
        ---
39
            member {discord.Member} -- The member that joined
40
        """
41
        new_role = discord.utils.get(member.guild.roles, name="new")
42
        await member.add_roles(
43
            new_role,
44
            reason="{} joined the server".format(member.name))
45
        welcome_message = await utils.select("messages", "message", "name", "welcome")
46
        if welcome_message:
47
            welcome_message = welcome_message[0].replace(r"\n", "\n")
48
            embed = discord.Embed(title="Welcome to the server!",
49
                                  description=welcome_message,
50
                                  timestamp=member.joined_at)
51
            await member.send(embed=embed)
52
53
    @commands.Cog.listener()
54
    async def on_member_remove(self, member: discord.Member):
55
        """on_member_remove
56
        ---
57
58
        Event is triggered when a members leaves the server.
59
        There is a message that they left that is sent to all admin_logging channels.
60
        Doesn't use utils.make_embed due to not having context.
61
62
        Arguments:
63
        ---
64
            member {discord.Member} -- The member that left
65
        """
66
        channels = await utils.select("admin_channels", "id", "log", "t")
67
        embed = await discord.Embed(title="User left",
68
                                    color=discord.Color(int("FF0000", 16)),
69
                                    description="{} user left".format(member.name))
70
        for channel in channels:
71
            to_send = self.bot.get_channel(channel)
72
            await to_send.send(embed=embed)
73
74
75
def setup(bot):
76
    """Needed for extension loading"""
77
    bot.add_cog(EventsCog(bot))
78