Fix bug with playback & add statuses (#8)

Co-authored-by: Myx <info@azaaxin.com>
This commit is contained in:
2024-10-25 21:06:26 +02:00
committed by GitHub
parent b79e56d3a1
commit 4cbee9a625
5 changed files with 42 additions and 17 deletions

View File

@@ -31,21 +31,23 @@ public class MessageReceivedHandler : INotificationHandler<MessageReceivedNotifi
var servers = _client.Guilds.Select(guild => guild.Name);
var channels = _client.Guilds
.SelectMany(guild => guild.VoiceChannels)
.Where(channel => channel.Users.Any(user => user.IsBot));
.Where(channel => channel.ConnectedUsers.Any(guildUser => guildUser.Id == _client.CurrentUser.Id) &&
channel.Users.Count != 1);
var table = new StringBuilder();
var serverColumnWidth = 25; // Width for server column
var channelColumnWidth = 25; // Width for channel column
table.AppendLine($"{"Servers".PadRight(serverColumnWidth - 1)}|{"Channels".PadRight(channelColumnWidth - 1)}");
table.AppendLine($"{new string('-', serverColumnWidth - 1)}|{new string('-', channelColumnWidth - 1)}");
foreach (var (server, channel) in servers.Zip(channels))
{
table.AppendLine($"{server.PadRight(serverColumnWidth - 1)}|{channel.Name.PadRight(channelColumnWidth - 1)}");
}
var statsList = new StringBuilder();
statsList.AppendLine("➡️ Servers");
foreach (var server in servers)
statsList.AppendLine($"* {server}");
statsList.AppendLine("➡️ Now playing channels: ");
foreach (var channel in channels)
statsList.AppendLine($"* {channel.Name} in {channel.Guild.Name}");
var embed = new EmbedBuilder()
.WithTitle("Lunaris Statistics")
.WithDescription(table.ToString())
.WithDescription(statsList.ToString())
.Build();
await notification.Message.Channel.SendMessageAsync(embed: embed);

View File

@@ -105,7 +105,7 @@ public class PlayHandler : IRequestHandler<PlayCommand>
var trackLoadOptions = new TrackLoadOptions
{
SearchMode = TrackSearchMode.YouTube,
SearchMode = TrackSearchMode.YouTubeMusic,
};
var trackCollection = await _audioService.Tracks.LoadTracksAsync(searchQuery, trackLoadOptions, cancellationToken: cancellationToken);
@@ -145,7 +145,7 @@ public class PlayHandler : IRequestHandler<PlayCommand>
else
{
// It's just a single track or a search result.
var track = trackCollection.Tracks.FirstOrDefault();
var track = trackCollection.Track;
if (track != null)
{

View File

@@ -6,6 +6,7 @@
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<UserSecretsId>ec2f340f-a44c-4869-ab79-a12ba9459d80</UserSecretsId>
<AssemblyVersion>0.0.1337</AssemblyVersion>
</PropertyGroup>
<!-- Lavalink4net 4.0.25 seems to break the Message Module-->

View File

@@ -1,3 +1,4 @@
using Discord;
using Discord.WebSocket;
namespace Lunaris2.Service
@@ -25,6 +26,30 @@ namespace Lunaris2.Service
}
private async Task CheckVoiceChannels()
{
SetStatus();
await LeaveOnAlone();
}
private void SetStatus()
{
var channels = _client.Guilds
.SelectMany(guild => guild.VoiceChannels)
.Count(channel =>
channel.ConnectedUsers
.Any(guildUser => guildUser.Id == _client.CurrentUser.Id) &&
channel.Users.Count > 1
);
if (channels == 0)
_client.SetGameAsync(System.Reflection.Assembly.GetEntryAssembly()?.GetName().Version?.ToString(), type: ActivityType.CustomStatus);
else if(channels == 1)
_client.SetGameAsync("in 1 server", type: ActivityType.Playing);
else if(channels > 1)
_client.SetGameAsync($" in {channels} servers", type: ActivityType.Playing);
}
private async Task LeaveOnAlone()
{
foreach (var guild in _client.Guilds)
{

View File

@@ -49,12 +49,9 @@ plugins:
# Clients are queried in the order they are given (so the first client is queried first and so on...)
clients:
- MUSIC
- ANDROID_TESTSUITE
- WEB
- TVHTML5EMBEDDED
# name: # Name of the plugin
# some_key: some_value # Some key-value pair for the plugin
# another_key: another_value
- ANDROID_TESTSUITE
lavalink:
plugins:
- dependency: com.github.devoxin:lavadspx-plugin:0.0.5 # replace {VERSION} with the latest version from the "Releases" tab.