FunkyBot/libs/LanguageButton.py

34 lines
1.6 KiB
Python

import discord
import importlib
import os
from libs.Roles import Roles
from data.models.Language import Language
class LanguageButton(discord.ui.Button):
def __init__(self, style=discord.ButtonStyle.blurple, label="Not Set"):
super().__init__()
self.style = style
self.label = label
self.disabled: bool = False
async def callback(self, interaction: discord.Interaction):
role = await Roles().get_role(interaction.guild, self.label)
language = interaction.client.db.session.query(Language).filter(Language.label == self.label).first()
lang_frameworks = [fw.label for fw in language.frameworks]
framework_roles = await Roles().get_roles(interaction.guild, lang_frameworks)
frameworks_to_remove = list(set(framework_roles) & set(interaction.user.roles))
messages = []
if role in interaction.user.roles:
await Roles().remove_role(interaction.guild, self.label, interaction.user)
for framework in frameworks_to_remove:
await Roles().remove_role(interaction.guild, framework.name, interaction.user)
messages.append(f"You are no longer associated with the {framework.name} framework group")
messages.append(f"You are no longer associated with the {self.label} language group")
else:
await Roles().add_role(interaction.guild, self.label, interaction.user)
messages.append(f"You are now associated with the {self.label} language group")
await interaction.response.send_message("\n".join(messages), delete_after=5, ephemeral=True)