Passed
Push β€” master ( e420f2...a37840 )
by Vinay
01:19
created

cogs.events.setup()   A

Complexity

Conditions 1

Size

Total Lines 2
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 2
dl 0
loc 2
rs 10
c 0
b 0
f 0
cc 1
nop 1
1
import os
2
import requests
3
import discord
4
import asyncio
5
import random
6
import datetime
7
import copy
8
from discord.ext import commands
9
10
11
class events(commands.Cog):
12
    def __init__(self, bot):
13
        self.bot = bot
14
15
    @commands.Cog.listener()
16
    async def on_ready(self):
17
        print(f"Beep boop {self.bot.user.name} has connected to Discord!\n")
18
        await self.bot.change_presence(
19
            status=discord.Status.online,
20
            activity=discord.Activity(
21
                type=discord.ActivityType.watching, name="for commands starting with !!, isa! or i!",
22
            ),
23
        )
24
25
    # No nonsense self role but requires a on emoji remove function
26
    # @commands.Cog.listener()
27
    # async def on_raw_reaction_add(self, payload):
28
    #     message_id = payload.message_id
29
    #     if message_id == 733615890293194752:
30
    #         guild_id = payload.guild_id
31
    #         guild = discord.utils.find(lambda g: g.id == guild_id, self.bot.guilds)
32
33
    #         if payload.emoji.name == "πŸ™‹β€β™‚οΈ":
34
    #             role = discord.utils.get(guild.roles, name="He/Him")
35
    #         if payload.emoji.name == "πŸ™‹β€β™€οΈ":
36
    #             role = discord.utils.get(guild.roles, name="She/Her")
37
    #         if payload.emoji.name == "πŸ™‹":
38
    #             role = discord.utils.get(guild.roles, name="Them/They")
39
40
    #         if role is not None:
41
    #             member = discord.utils.find(lambda m: m.id == payload.user_id, guild.members)
42
    #             if member is not None:
43
    #                 await member.add_roles(role)
44
    #             else:
45
    #                 print("member not found")
46
47
    # NOTE: all the messages and their IDs are hard coded as of now and probably will be since this bot is only for one server.
48
    # IDEA: I can go ahead and store everything in a database or a JSON file but seems unnecessary as it'll be only extra steps.
49
    # IDEA: If in future it turns out to be useful function, a bot command can be made which asks for a message and emoji and their roles and posts it
50
    # while storing all IDs in JSON and reading from there.
51
52
    @commands.Cog.listener()
53
    async def on_raw_reaction_add(self, payload):
54
        message_id = payload.message_id
55
        if message_id == 734044027858452502:  # ID of the role message
56
            guild_id = payload.guild_id
57
            guild = discord.utils.find(lambda g: g.id == guild_id, self.bot.guilds)
0 ignored issues
show
introduced by
The variable guild_id does not seem to be defined in case message_id == 734044027858452502 on line 55 is False. Are you sure this can never be the case?
Loading history...
58
59
            roles = {
60
                "πŸ™‹β€β™‚οΈ": "He/Him",
61
                "πŸ™‹β€β™€οΈ": "She/Her",
62
                "πŸ™‹": "They/Them",
63
            }
64
65
            if payload.emoji.name == "πŸ™‹β€β™‚οΈ":
66
                role = discord.utils.get(guild.roles, name="He/Him")
67
            if payload.emoji.name == "πŸ™‹β€β™€οΈ":
68
                role = discord.utils.get(guild.roles, name="She/Her")
69
            if payload.emoji.name == "πŸ™‹":
70
                role = discord.utils.get(guild.roles, name="They/Them")
71
72
            if role is not None:
0 ignored issues
show
introduced by
The variable role does not seem to be defined in case payload.emoji.name == "πŸ™‹‍♂️" on line 65 is False. Are you sure this can never be the case?
Loading history...
73
                member = discord.utils.find(lambda m: m.id == payload.user_id, guild.members)
74
                if member is not None:
75
                    current_role = list(filter(lambda r: str(r) in list(roles.values()), payload.member.roles))
0 ignored issues
show
introduced by
The variable roles does not seem to be defined in case message_id == 734044027858452502 on line 55 is False. Are you sure this can never be the case?
Loading history...
76
                    await member.remove_roles(*current_role)
77
                    await member.add_roles(role)
78
                    pronoun_message = await self.bot.get_channel(699675695231533126).fetch_message(
79
                        734044027858452502
80
                    )  # ID of role message or channel
81
                    await pronoun_message.remove_reaction(payload.emoji, payload.member)
82
                else:
83
                    print("member not found")
84
85
        if message_id == 734610164899905569:
86
            guild_id = payload.guild_id
87
            guild = discord.utils.find(lambda g: g.id == guild_id, self.bot.guilds)
0 ignored issues
show
introduced by
The variable guild_id does not seem to be defined in case message_id == 734044027858452502 on line 55 is False. Are you sure this can never be the case?
Loading history...
88
89
            roles = {
90
                "πŸ‘Ά": "πŸ‘Ά Freshman",
91
                "✌️": "✌️ Sophomore",
92
                "🍻": "🍻 Junior",
93
                "πŸ‘‘": "πŸ‘‘ Senior",
94
                "πŸ’€": "πŸ’€ SuperSenior",
95
                "πŸ‘¨β€πŸŽ“": "πŸ‘¨β€πŸŽ“ Alumna",
96
                "πŸ“œ": "πŸ“œ Graduate School",
97
                "🍾": "🍾 PhD",
98
            }
99
100
            role = None
101
102
            for x in list(roles.keys()):
103
                if payload.emoji.name == x:
104
                    role = discord.utils.get(guild.roles, name=roles[x])
105
                    break
106
107
            if role is not None:
108
                current_role = list(filter(lambda r: str(r) in list(roles.values()), payload.member.roles))
0 ignored issues
show
introduced by
The variable roles does not seem to be defined in case message_id == 734044027858452502 on line 55 is False. Are you sure this can never be the case?
Loading history...
109
                await payload.member.remove_roles(*current_role)
110
                await payload.member.add_roles(role)
111
                class_message = await self.bot.get_channel(699675695231533126).fetch_message(734610164899905569)
112
                if current_role:
113
                    for emoji, pre_role in roles.items():
114
                        if pre_role == str(current_role[0]):
115
                            await class_message.remove_reaction(emoji, payload.member)
116
                            break
117
            else:
118
                print("role not found")
119
120
    @commands.Cog.listener()
121
    async def on_raw_reaction_remove(self, payload):
122
        message_id = payload.message_id
123
        if message_id == 734610164899905569:
124
            guild_id = payload.guild_id
125
            guild = discord.utils.find(lambda g: g.id == guild_id, self.bot.guilds)
0 ignored issues
show
introduced by
The variable guild_id does not seem to be defined in case message_id == 734610164899905569 on line 123 is False. Are you sure this can never be the case?
Loading history...
126
127
            roles = {
128
                "πŸ‘Ά": "πŸ‘Ά Freshman",
129
                "✌️": "✌️ Sophomore",
130
                "🍻": "🍻 Junior",
131
                "πŸ‘‘": "πŸ‘‘ Senior",
132
                "πŸ’€": "πŸ’€ SuperSenior",
133
                "πŸ‘¨β€πŸŽ“": "πŸ‘¨β€πŸŽ“ Alumna",
134
                "πŸ“œ": "πŸ“œ Graduate School",
135
                "🍾": "🍾 PhD",
136
            }
137
138
            role = None
139
140
            for x in list(roles.keys()):
141
                if payload.emoji.name == x:
142
                    role = discord.utils.get(guild.roles, name=roles[x])
143
                    break
144
145
            if role is not None:
146
                member = discord.utils.find(lambda m: m.id == payload.user_id, guild.members)
147
                if member is not None:
148
                    await member.remove_roles(role)
149
            else:
150
                print("role not found")
151
152
    # @commands.Cog.listener()
153
    # async def on_member_join(self, member):
154
    #     channel = discord.utils.get(member.guild.text_channels, name="welcomeπŸ”₯")
155
    #     des = (
156
    #         f"Welcome {member.mention} to Indian Students Association's "
157
    #         f"official discord server!\n"
158
    #         f"Don't forget to check {(discord.utils.get(member.guild.channels, name='rulesπŸ“ƒ')).mention}"
159
    #         f"and {(discord.utils.get(member.guild.channels, name='faq')).mention}"
160
    #     )
161
    #     if channel:
162
    #         embed = discord.Embed(description=des, color=random.choice(self.bot.color_list))
163
    #         embed.set_thumbnail(url=member.avatar_url)
164
    #         embed.set_author(name=member.name, icon_url=member.avatar_url)
165
    #         embed.set_footer(text=member.guild, icon_url=member.guild.icon_url)
166
    #         embed.timestamp = datetime.datetime.utcnow()
167
168
    #         await channel.send(embed=embed)
169
170
171
def setup(bot):
172
    bot.add_cog(events(bot))
173