/
role_buttons.py
42 lines (34 loc) · 1.44 KB
/
role_buttons.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import discord
import re
from itertools import takewhile
def derive_label(string):
enders = {
"AppleEventNews": " ",
"SubredditNews": " ",
"CommunityEvents": " ",
"CommunityEvents": " ",
"Giveaway": "Notifications",
"OtherUpdates": " "
}
if string == "iPadOS":
return "iPadOS Updates"
starter = str("".join(list(takewhile(lambda x: x.islower(), string))))
middle = " ".join(re.findall(
r'[A-Z0-9](?:[a-z0-9]+|[A-Z0-9]*(?=[A-Z0-9]|$))', string))
#return f"{starter}{middle} {enders.get(string)}"
return string # FUCK OFF
class ReactionRoleButton(discord.ui.Button):
def __init__(self, role: discord.Role, emoji: discord.Emoji):
super().__init__(label=derive_label(role.name), style=discord.ButtonStyle.primary, emoji=emoji, custom_id=str(role.id))
async def callback(self, interaction: discord.Interaction):
user = interaction.user
role = interaction.guild.get_role(int(self.custom_id))
if role is None:
return
await interaction.response.defer(ephemeral=True)
if role not in user.roles:
await user.add_roles(role)
await interaction.followup.send(f"{self.emoji} You got the {role.mention} role!", ephemeral=True)
else:
await user.remove_roles(role)
await interaction.followup.send(f"{self.emoji} We've removed the {role.mention} role.", ephemeral=True)