Compare commits

..

2 Commits

Author SHA1 Message Date
e01746a343 Update README.md 2024-10-25 21:54:44 +02:00
e847c1579a Update readme.md 2024-10-25 21:51:44 +02:00
2 changed files with 67 additions and 16 deletions

View File

@@ -10,22 +10,25 @@ flowchart TD
```mermaid ```mermaid
sequenceDiagram sequenceDiagram
participant User as User participant User
participant DiscordSocketClient as DiscordSocketClient participant Bot
participant MessageReceivedHandler as MessageReceivedHandler participant DiscordSocketClient
participant MessageReceivedNotification as MessageReceivedNotification participant IAudioService
participant EmbedBuilder as EmbedBuilder participant SocketSlashCommand
participant Channel as Channel participant LavalinkPlayer
User->>DiscordSocketClient: Send message "!LunarisStats" User->>Bot: /play [song]
DiscordSocketClient->>MessageReceivedHandler: MessageReceivedNotification Bot->>DiscordSocketClient: Get user voice channel
MessageReceivedHandler->>MessageReceivedNotification: Handle(notification, cancellationToken) DiscordSocketClient-->>Bot: Voice channel info
MessageReceivedNotification->>MessageReceivedHandler: BotMentioned(notification, cancellationToken) Bot->>IAudioService: Get or create player
MessageReceivedHandler->>DiscordSocketClient: Get guilds and voice channels IAudioService-->>Bot: Player instance
DiscordSocketClient-->>MessageReceivedHandler: List of guilds and voice channels Bot->>SocketSlashCommand: Get search query
MessageReceivedHandler->>EmbedBuilder: Create embed with statistics SocketSlashCommand-->>Bot: Search query
EmbedBuilder-->>MessageReceivedHandler: Embed Bot->>IAudioService: Load tracks
MessageReceivedHandler->>Channel: Send embed message IAudioService-->>Bot: Track collection
Bot->>LavalinkPlayer: Play track
LavalinkPlayer-->>Bot: Track started
Bot->>User: Now playing embed
``` ```
## Steps in the code ## Steps in the code

View File

@@ -136,4 +136,52 @@ sequenceDiagram
end end
``` ```
This README provides an overview of the handlers and their responsibilities, along with class and sequence diagrams to illustrate the interactions and relationships between the components. ## Extensions.cs
#### Namespaces
- **Discord**: Provides classes for interacting with Discord.
- **Discord.WebSocket**: Provides WebSocket-specific classes for Discord.
- **Lavalink4NET**: Provides classes for interacting with Lavalink.
- **Lavalink4NET.Players**: Provides player-related classes for Lavalink.
- **Lavalink4NET.Players.Queued**: Provides queued player-related classes for Lavalink.
- **Microsoft.Extensions.Options**: Provides classes for handling options and configurations.
#### Class: `Extensions`
This static class contains extension methods for various Discord and Lavalink operations.
##### Method: `GetPlayerAsync`
- **Parameters**:
- `IAudioService audioService`: The audio service to retrieve the player from.
- `DiscordSocketClient client`: The Discord client.
- `SocketSlashCommand context`: The context of the slash command.
- `bool connectToVoiceChannel`: Whether to connect to the voice channel (default is true).
- **Returns**: `ValueTask<QueuedLavalinkPlayer?>`
- **Description**: Retrieves a `QueuedLavalinkPlayer` for the given context. If the retrieval fails, it returns null and sends an appropriate error message.
##### Method: `GetGuild`
- **Parameters**:
- `SocketSlashCommand message`: The slash command message.
- `DiscordSocketClient client`: The Discord client.
- **Returns**: `SocketGuild`
- **Description**: Retrieves the guild associated with the given slash command message. Throws an exception if the guild ID is null.
##### Method: `GetVoiceState`
- **Parameters**:
- `SocketSlashCommand message`: The slash command message.
- **Returns**: `IVoiceState`
- **Description**: Retrieves the voice state of the user who issued the slash command. Throws an exception if the user is not connected to a voice channel.
##### Method: `RespondAsync`
- **Parameters**:
- `SocketSlashCommand message`: The slash command message.
- `string content`: The content of the response.
- **Returns**: `Task`
- **Description**: Sends an ephemeral response to the slash command.
##### Method: `GetOptionValueByName`
- **Parameters**:
- `SocketSlashCommand command`: The slash command.
- `string optionName`: The name of the option to retrieve the value for.
- **Returns**: `string`
- **Description**: Retrieves the value of the specified option from the slash command. Returns an empty string if the option is not found.