Passed
Push β€” master ( 60e754...e420f2 )
by Vinay
03:43
created

cogs.events.events.on_raw_reaction_remove()   A

Complexity

Conditions 1

Size

Total Lines 3
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 3
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 1
nop 2
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 = 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
                    current_role = list(current_role)
77
                    await member.remove_roles(*current_role)
78
                    await member.add_roles(role)
79
                    pronoun_message = await self.bot.get_channel(699675695231533126).fetch_message(
80
                        734044027858452502
81
                    )  # ID of role message or channel
82
                    await pronoun_message.remove_reaction(payload.emoji, payload.member)
83
                else:
84
                    print("member not found")
85
86
    @commands.Cog.listener()
87
    async def on_raw_reaction_remove(self, payload):
88
        pass
89
90
    # @commands.Cog.listener()
91
    # async def on_member_join(self, member):
92
    #     channel = discord.utils.get(member.guild.text_channels, name="welcomeπŸ”₯")
93
    #     des = (
94
    #         f"Welcome {member.mention} to Indian Students Association's "
95
    #         f"official discord server!\n"
96
    #         f"Don't forget to check {(discord.utils.get(member.guild.channels, name='rulesπŸ“ƒ')).mention}"
97
    #         f"and {(discord.utils.get(member.guild.channels, name='faq')).mention}"
98
    #     )
99
    #     if channel:
100
    #         embed = discord.Embed(description=des, color=random.choice(self.bot.color_list))
101
    #         embed.set_thumbnail(url=member.avatar_url)
102
    #         embed.set_author(name=member.name, icon_url=member.avatar_url)
103
    #         embed.set_footer(text=member.guild, icon_url=member.guild.icon_url)
104
    #         embed.timestamp = datetime.datetime.utcnow()
105
106
    #         await channel.send(embed=embed)
107
108
109
def setup(bot):
110
    bot.add_cog(events(bot))
111