diff --git a/utils.py b/utils.py index b41e8bbc9cebb1465421c5b5804a9036a2e7db95..df975cd3ab957276a6bfe8812f071c60f470bd74 100644 --- a/utils.py +++ b/utils.py @@ -2,7 +2,8 @@ import os import disnake import re -from views.confirm_view import ConfirmView + +from views.dialog_view import DialogView async def send_dm(user, message, embed=None): @@ -44,8 +45,22 @@ def to_minutes(time): return int(time) -async def confirm(channel, title, description, message="", callback=None): +async def dialog(channel, title, description, message="", buttons=None, callback=None): embed = disnake.Embed(title=title, description=description, color=19607) - return await channel.send(message, embed=embed, view=ConfirmView(callback)) + return await channel.send(message, embed=embed, view=DialogView(buttons, callback)) + + +async def confirm(channel, title, description, message="", callback=None): + return await dialog( + channel=channel, + title=title, + description=description, + message=message, + callback=callback, + buttons=[ + {"emoji": "ðŸ‘", "value": True}, + {"emoji": "👎", "value": False} + ] + ) diff --git a/views/confirm_view.py b/views/confirm_view.py deleted file mode 100644 index 0f2517cf3271cde80bdc19cfc2b6fe346ae4ae72..0000000000000000000000000000000000000000 --- a/views/confirm_view.py +++ /dev/null @@ -1,19 +0,0 @@ -import disnake -from disnake import MessageInteraction, ButtonStyle -from disnake.ui import Button - - -class ConfirmView(disnake.ui.View): - def __init__(self, callback=None): - super().__init__(timeout=None) - self.callback = callback - - @disnake.ui.button(emoji="ðŸ‘", style=ButtonStyle.grey) - async def btn_subscribe(self, button: Button, interaction: MessageInteraction): - if self.callback: - await self.callback(True, button, interaction) - - @disnake.ui.button(emoji="👎", style=ButtonStyle.grey) - async def btn_unsubscribe(self, button: Button, interaction: MessageInteraction): - if self.callback: - await self.callback(False, button, interaction) \ No newline at end of file diff --git a/views/dialog_view.py b/views/dialog_view.py new file mode 100644 index 0000000000000000000000000000000000000000..ca1fe49a0f3d244f1595ad03b825082d3583a51e --- /dev/null +++ b/views/dialog_view.py @@ -0,0 +1,31 @@ +import disnake +from disnake import MessageInteraction, ButtonStyle +from disnake.ui import Button + + +class DialogView(disnake.ui.View): + def __init__(self, buttons=None, callback=None): + super().__init__(timeout=None) + self.callback = callback + for button_config in buttons: + self.add_button(button_config) + + def add_button(self, config): + button = disnake.ui.Button( + style=config.get("style", ButtonStyle.grey), + label=config.get("label", None), + disabled=config.get("disabled", False), + custom_id=config.get("custom_id", None), + url=config.get("url", None), + emoji=config.get("emoji", None), + row=config.get("row", None) + ) + button.value = config.get("value") + button.callback = self.internal_callback(button) + self.add_item(button) + + def internal_callback(self, button): + async def button_callback(interaction): + await self.callback(button, interaction, value=button.value) + return button_callback +