Passed
Pull Request — master (#50)
by Cyb3r
01:40
created

bot.cogs.events.EventsCog.on_member_remove()   A

Complexity

Conditions 2

Size

Total Lines 21
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

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