vinaydawani /
ISA-bot
| 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
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
|
|||
| 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
|
|||
| 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
|
|||
| 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
|
|||
| 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
|
|||
| 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 |