This commit is contained in:
Tim Müller
2022-03-29 22:12:22 +02:00
commit 147eed234f
76 changed files with 6489 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
using System.Text;
using DSharpPlus;
using DSharpPlus.Entities;
using System.Threading.Tasks;
using TomatenMusic.Prompt.Option;
using TomatenMusic.Prompt.Model;
namespace TomatenMusic.Prompt.Option
{
class ButtonPromptOption : IPromptOption
{
public ButtonStyle Style { get; set; } = ButtonStyle.Primary;
public string Content { get; set; } = " ";
public DiscordComponentEmoji Emoji { get; set; }
public bool Disabled { get; set; } = false;
public string CustomID { get; set; }
public string Link { get; set; }
public int Row { get; set; }
public Func<Option.IPromptOption, Task<Option.IPromptOption>> UpdateMethod { get; set; } = async prompt =>
{
return prompt;
};
public Func<DSharpPlus.EventArgs.ComponentInteractionCreateEventArgs, DiscordClient, IPromptOption, Task> Run { get; set; } = async (args, sender, prompt) =>
{
};
}
}

View File

@@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Text;
using DSharpPlus;
using DSharpPlus.Entities;
using System.Threading.Tasks;
using TomatenMusic.Prompt.Option;
using TomatenMusic.Prompt.Model;
namespace TomatenMusic.Prompt.Option
{
interface IPromptOption
{
public string Content { get; set; }
public string CustomID { get; set; }
public int Row { get; set; }
public bool Disabled { get; set; }
public Func<IPromptOption, Task<IPromptOption>> UpdateMethod { get; set; }
public Func<DSharpPlus.EventArgs.ComponentInteractionCreateEventArgs, DiscordClient, IPromptOption, Task> Run { get; set; }
}
}

View File

@@ -0,0 +1,23 @@
using DSharpPlus;
using DSharpPlus.EventArgs;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using TomatenMusic.Prompt.Model;
using DSharpPlus.Entities;
namespace TomatenMusic.Prompt.Option
{
class SelectMenuOption
{
public string Label { get; set; }
public string CustomID { get; set; }
public string Description { get; set; }
public bool Default { get; set; }
public DiscordComponentEmoji Emoji { get; set; }
public Func<ComponentInteractionCreateEventArgs, DiscordClient, SelectMenuOption, Task> OnSelected { get; set; }
public Func<ComponentInteractionCreateEventArgs, DiscordClient, SelectMenuOption, Task> OnUnselected { get; set; }
}
}

View File

@@ -0,0 +1,50 @@
using DSharpPlus;
using DSharpPlus.Entities;
using DSharpPlus.EventArgs;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using TomatenMusic.Prompt.Model;
using System.Linq;
namespace TomatenMusic.Prompt.Option
{
class SelectMenuPromptOption : IPromptOption
{
public string Content { get; set; } = " ";
public string CustomID { get; set; }
public int Row { get; set; } = 1;
public bool Disabled { get; set; } = false;
public List<SelectMenuOption> Options { get; set; } = new List<SelectMenuOption>();
public int MinValues { get; set; } = 1;
public int MaxValues { get; set; } = 1;
public List<string> CurrentValues { get; set; } = new List<string>();
public Func<IPromptOption, Task<IPromptOption>> UpdateMethod { get; set; } = async (prompt) =>
{
return prompt;
};
public Func<ComponentInteractionCreateEventArgs, DiscordClient, IPromptOption, Task> Run { get; set; } = async (args, sender, option) =>
{
SelectMenuPromptOption _option = (SelectMenuPromptOption)option;
foreach (var item in _option.Options)
{
if (_option.CurrentValues.Contains(item.CustomID) && !args.Values.Contains(item.CustomID))
{
await item.OnUnselected.Invoke(args, sender, item);
}
if (!_option.CurrentValues.Contains(item.CustomID) && args.Values.Contains(item.CustomID))
{
await item.OnSelected.Invoke(args, sender, item);
}
}
_option.CurrentValues = new List<string>(args.Values);
};
}
}