mirror of
https://github.com/Myxelium/Lunaris2.0.git
synced 2026-04-13 16:10:36 +00:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7c4d8c246d | |||
| 43f0191752 |
@@ -8,6 +8,75 @@ flowchart TD
|
||||
PlayTrack --> NowPlayingEmbed
|
||||
```
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class PlayHandler {
|
||||
-MusicEmbed _musicEmbed
|
||||
-DiscordSocketClient _client
|
||||
-IAudioService _audioService
|
||||
-SocketSlashCommand _context
|
||||
-const int MaxTrackDuration
|
||||
-LavalinkTrack? _previousTrack
|
||||
-static HashSet~ulong~ SubscribedGuilds
|
||||
+PlayHandler(DiscordSocketClient client, MusicEmbed musicEmbed, IAudioService audioService)
|
||||
+Task Handle(PlayCommand command, CancellationToken cancellationToken)
|
||||
-void PlayMusic()
|
||||
-Task OnTrackEnded(object sender, TrackEndedEventArgs eventargs)
|
||||
-Task OnTrackStarted(object sender, TrackStartedEventArgs eventargs)
|
||||
-void RegisterTrackStartedEventListerner(PlayCommand command)
|
||||
-static Task ApplyFilters(CancellationToken cancellationToken, QueuedLavalinkPlayer player)
|
||||
-static Task ConfigureSponsorBlock(CancellationToken cancellationToken, QueuedLavalinkPlayer player)
|
||||
}
|
||||
|
||||
class PlayCommand {
|
||||
+SocketSlashCommand Message
|
||||
}
|
||||
|
||||
class TrackEndedEventArgs {
|
||||
}
|
||||
|
||||
class TrackStartedEventArgs {
|
||||
}
|
||||
|
||||
class QueuedLavalinkPlayer {
|
||||
+LavalinkTrack? CurrentTrack
|
||||
+Task PlayAsync(LavalinkTrack track, CancellationToken cancellationToken)
|
||||
+Task Queue.AddRangeAsync(List~TrackQueueItem~ queueTracks, CancellationToken cancellationToken)
|
||||
+Task Filters.SetFilter(NormalizationFilter normalizationFilter)
|
||||
+Task Filters.CommitAsync(CancellationToken cancellationToken)
|
||||
+Task UpdateSponsorBlockCategoriesAsync(ImmutableArray~SegmentCategory~ categories, CancellationToken cancellationToken)
|
||||
}
|
||||
|
||||
class LavalinkTrack {
|
||||
+string Identifier
|
||||
}
|
||||
|
||||
class NormalizationFilter {
|
||||
+NormalizationFilter(double gain, bool enabled)
|
||||
}
|
||||
|
||||
class SegmentCategory {
|
||||
+static SegmentCategory Intro
|
||||
+static SegmentCategory Sponsor
|
||||
+static SegmentCategory SelfPromotion
|
||||
+static SegmentCategory Outro
|
||||
+static SegmentCategory Filler
|
||||
}
|
||||
|
||||
class TrackQueueItem {
|
||||
+TrackQueueItem(LavalinkTrack track)
|
||||
}
|
||||
|
||||
PlayHandler --> PlayCommand
|
||||
PlayHandler --> TrackEndedEventArgs
|
||||
PlayHandler --> TrackStartedEventArgs
|
||||
PlayHandler --> QueuedLavalinkPlayer
|
||||
PlayHandler --> LavalinkTrack
|
||||
PlayHandler --> NormalizationFilter
|
||||
PlayHandler --> SegmentCategory
|
||||
PlayHandler --> TrackQueueItem
|
||||
```
|
||||
|
||||
## Steps in the code
|
||||
|
||||
| Name | Description |
|
||||
@@ -32,4 +101,4 @@ There is also OnTrackEnd, when it get called an attempt is made to play the next
|
||||
| `player` | `LavaPlayer` | An instance of the `LavaPlayer` class, representing a music player connected to a specific voice channel. Used to play, pause, skip, and queue tracks. |
|
||||
| `guildMessageIds` | `Dictionary<ulong, List<ulong>>` | A dictionary that maps guild IDs to lists of message IDs. Used to keep track of messages sent by the bot in each guild, allowing the bot to delete its old messages when it sends new ones. |
|
||||
| `songName` | `string` | A string that represents the name or URL of a song to play. Used to search for and queue tracks. |
|
||||
| `searchResponse` | `SearchResponse` | An instance of the `SearchResponse` class, representing the result of a search for tracks. Used to get the tracks that were found and queue them in the player. |
|
||||
| `searchResponse` | `SearchResponse` | An instance of the `SearchResponse` class, representing the result of a search for tracks. Used to get the tracks that were found and queue them in the player. |
|
||||
|
||||
@@ -67,73 +67,23 @@ public class MessageReceivedHandler : INotificationHandler<MessageReceivedNotifi
|
||||
### Class Diagram
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class ClearQueueHandler {
|
||||
+Task Handle(ClearQueueCommand command, CancellationToken cancellationToken)
|
||||
}
|
||||
class DisconnectHandler {
|
||||
+Task Handle(DisconnectCommand command, CancellationToken cancellationToken)
|
||||
}
|
||||
class PauseHandler {
|
||||
+Task Handle(PauseCommand command, CancellationToken cancellationToken)
|
||||
}
|
||||
class PlayHandler {
|
||||
+Task Handle(PlayCommand command, CancellationToken cancellationToken)
|
||||
}
|
||||
class ResumeHandler {
|
||||
+Task Handle(ResumeCommand command, CancellationToken cancellationToken)
|
||||
}
|
||||
class SkipHandler {
|
||||
+Task Handle(SkipCommand command, CancellationToken cancellationToken)
|
||||
}
|
||||
class MessageReceivedHandler {
|
||||
+Task Handle(MessageReceivedNotification notification, CancellationToken cancellationToken)
|
||||
}
|
||||
class IAudioService
|
||||
class DiscordSocketClient
|
||||
class SocketSlashCommand
|
||||
class CancellationToken
|
||||
class Task
|
||||
class IRequestHandler
|
||||
class INotificationHandler
|
||||
sequenceDiagram
|
||||
participant User as User
|
||||
participant DiscordSocketClient as DiscordSocketClient
|
||||
participant MessageReceivedHandler as MessageReceivedHandler
|
||||
participant MessageReceivedNotification as MessageReceivedNotification
|
||||
participant EmbedBuilder as EmbedBuilder
|
||||
participant Channel as Channel
|
||||
|
||||
ClearQueueHandler ..|> IRequestHandler
|
||||
DisconnectHandler ..|> IRequestHandler
|
||||
PauseHandler ..|> IRequestHandler
|
||||
PlayHandler ..|> IRequestHandler
|
||||
ResumeHandler ..|> IRequestHandler
|
||||
SkipHandler ..|> IRequestHandler
|
||||
MessageReceivedHandler ..|> INotificationHandler
|
||||
ClearQueueHandler --> IAudioService
|
||||
DisconnectHandler --> IAudioService
|
||||
PauseHandler --> IAudioService
|
||||
PlayHandler --> IAudioService
|
||||
ResumeHandler --> IAudioService
|
||||
SkipHandler --> IAudioService
|
||||
ClearQueueHandler --> DiscordSocketClient
|
||||
DisconnectHandler --> DiscordSocketClient
|
||||
PauseHandler --> DiscordSocketClient
|
||||
PlayHandler --> DiscordSocketClient
|
||||
ResumeHandler --> DiscordSocketClient
|
||||
SkipHandler --> DiscordSocketClient
|
||||
ClearQueueHandler --> SocketSlashCommand
|
||||
DisconnectHandler --> SocketSlashCommand
|
||||
PauseHandler --> SocketSlashCommand
|
||||
PlayHandler --> SocketSlashCommand
|
||||
ResumeHandler --> SocketSlashCommand
|
||||
SkipHandler --> SocketSlashCommand
|
||||
ClearQueueHandler --> CancellationToken
|
||||
DisconnectHandler --> CancellationToken
|
||||
PauseHandler --> CancellationToken
|
||||
PlayHandler --> CancellationToken
|
||||
ResumeHandler --> CancellationToken
|
||||
SkipHandler --> CancellationToken
|
||||
ClearQueueHandler --> Task
|
||||
DisconnectHandler --> Task
|
||||
PauseHandler --> Task
|
||||
PlayHandler --> Task
|
||||
ResumeHandler --> Task
|
||||
SkipHandler --> Task
|
||||
User->>DiscordSocketClient: Send message "!LunarisStats"
|
||||
DiscordSocketClient->>MessageReceivedHandler: MessageReceivedNotification
|
||||
MessageReceivedHandler->>MessageReceivedNotification: Handle(notification, cancellationToken)
|
||||
MessageReceivedNotification->>MessageReceivedHandler: BotMentioned(notification, cancellationToken)
|
||||
MessageReceivedHandler->>DiscordSocketClient: Get guilds and voice channels
|
||||
DiscordSocketClient-->>MessageReceivedHandler: List of guilds and voice channels
|
||||
MessageReceivedHandler->>EmbedBuilder: Create embed with statistics
|
||||
EmbedBuilder-->>MessageReceivedHandler: Embed
|
||||
MessageReceivedHandler->>Channel: Send embed message
|
||||
```
|
||||
|
||||
### Sequence Diagram for PlayHandler
|
||||
|
||||
Reference in New Issue
Block a user