From d956c94aa037539a41c8a938dd3a8d12ffa364aa Mon Sep 17 00:00:00 2001 From: Oliver Booth Date: Tue, 22 Aug 2023 15:07:49 +0100 Subject: [PATCH 1/2] style: use bold name in Discord relay --- VpBridge/Services/DiscordService.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/VpBridge/Services/DiscordService.cs b/VpBridge/Services/DiscordService.cs index 226a978..78a64e9 100644 --- a/VpBridge/Services/DiscordService.cs +++ b/VpBridge/Services/DiscordService.cs @@ -1,4 +1,4 @@ -using System.Reactive.Linq; +using System.Reactive.Linq; using System.Reactive.Subjects; using System.Text.RegularExpressions; using Discord; @@ -94,7 +94,7 @@ internal sealed partial class DiscordService : BackgroundService, IDiscordServic string escaped = EscapeRegex.Replace(unescaped, "\\$1"); string displayName = author.Name; - return channel.SendMessageAsync($"{displayName}: {escaped}"); + return channel.SendMessageAsync($"**{displayName}**: {escaped}"); } [GeneratedRegex(@"\\(\*|_|`|~|\\)", RegexOptions.Compiled)] From 1937b55fefe23db04a1cc4880619f70d6f1e9c2c Mon Sep 17 00:00:00 2001 From: Oliver Booth Date: Tue, 22 Aug 2023 15:11:19 +0100 Subject: [PATCH 2/2] feat: add !who command --- VpBridge/Services/DiscordService.cs | 33 +++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/VpBridge/Services/DiscordService.cs b/VpBridge/Services/DiscordService.cs index 78a64e9..f75c9c0 100644 --- a/VpBridge/Services/DiscordService.cs +++ b/VpBridge/Services/DiscordService.cs @@ -1,11 +1,13 @@ -using System.Reactive.Linq; +using System.Reactive.Linq; using System.Reactive.Subjects; +using System.Text; using System.Text.RegularExpressions; using Discord; using Discord.WebSocket; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; +using VpSharp; using VpSharp.Entities; namespace VpBridge.Services; @@ -19,6 +21,7 @@ internal sealed partial class DiscordService : BackgroundService, IDiscordServic private readonly ILogger _logger; private readonly IConfiguration _configuration; private readonly DiscordSocketClient _discordClient; + private readonly VirtualParadiseClient _virtualParadiseClient; private readonly Subject _messageReceived = new(); /// @@ -27,13 +30,16 @@ internal sealed partial class DiscordService : BackgroundService, IDiscordServic /// The logger. /// The configuration. /// The Discord client. + /// The Virtual Paradise client. public DiscordService(ILogger logger, IConfiguration configuration, - DiscordSocketClient discordClient) + DiscordSocketClient discordClient, + VirtualParadiseClient virtualParadiseClient) { _logger = logger; _configuration = configuration; _discordClient = discordClient; + _virtualParadiseClient = virtualParadiseClient; } /// @@ -51,6 +57,29 @@ internal sealed partial class DiscordService : BackgroundService, IDiscordServic if (message.Channel.Id != _configuration.GetSection("Discord:ChannelId").Get()) return Task.CompletedTask; + if (message.Content.Equals("!who")) + { + VirtualParadiseAvatar[] avatars = _virtualParadiseClient.Avatars.Where(a => !a.IsBot).ToArray(); + int count = avatars.Length; + + if (count > 0) + { + var builder = new StringBuilder(); + builder.AppendLine("**Users In World 🌎**"); + foreach (VirtualParadiseAvatar avatar in _virtualParadiseClient.Avatars) + { + if (avatar.IsBot || avatar == _virtualParadiseClient.CurrentAvatar) + continue; + + builder.AppendLine($"• {avatar.Name}"); + } + + return message.ReplyAsync(builder.ToString()); + } + + return message.ReplyAsync("**No Users In World 🚫**"); + } + _messageReceived.OnNext(message); return Task.CompletedTask; };