new sharded client
This commit is contained in:
parent
3926bc707b
commit
c603efa643
@ -94,7 +94,7 @@ namespace NadekoBot.Modules.Administration
|
|||||||
MuteCommands.UserUnmuted += MuteCommands_UserUnmuted;
|
MuteCommands.UserUnmuted += MuteCommands_UserUnmuted;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async void _client_UserUpdated(SocketUser before, SocketUser uAfter)
|
private static async Task _client_UserUpdated(SocketUser before, SocketUser uAfter)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -162,7 +162,7 @@ namespace NadekoBot.Modules.Administration
|
|||||||
{ }
|
{ }
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async void _client_UserVoiceStateUpdated_TTS(SocketUser iusr, SocketVoiceState before, SocketVoiceState after)
|
private static async Task _client_UserVoiceStateUpdated_TTS(SocketUser iusr, SocketVoiceState before, SocketVoiceState after)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -317,7 +317,7 @@ namespace NadekoBot.Modules.Administration
|
|||||||
catch { }
|
catch { }
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async void _client_GuildUserUpdated(SocketGuildUser before, SocketGuildUser after)
|
private static async Task _client_GuildUserUpdated(SocketGuildUser before, SocketGuildUser after)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -360,7 +360,7 @@ namespace NadekoBot.Modules.Administration
|
|||||||
catch { }
|
catch { }
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async void _client_ChannelUpdated(IChannel cbefore, IChannel cafter)
|
private static async Task _client_ChannelUpdated(IChannel cbefore, IChannel cafter)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -403,7 +403,7 @@ namespace NadekoBot.Modules.Administration
|
|||||||
catch { }
|
catch { }
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async void _client_ChannelDestroyed(IChannel ich)
|
private static async Task _client_ChannelDestroyed(IChannel ich)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -430,7 +430,7 @@ namespace NadekoBot.Modules.Administration
|
|||||||
catch { }
|
catch { }
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async void _client_ChannelCreated(IChannel ich)
|
private static async Task _client_ChannelCreated(IChannel ich)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -456,7 +456,7 @@ namespace NadekoBot.Modules.Administration
|
|||||||
catch (Exception ex) { _log.Warn(ex); }
|
catch (Exception ex) { _log.Warn(ex); }
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async void _client_UserVoiceStateUpdated(SocketUser iusr, SocketVoiceState before, SocketVoiceState after)
|
private static async Task _client_UserVoiceStateUpdated(SocketUser iusr, SocketVoiceState before, SocketVoiceState after)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -498,7 +498,7 @@ namespace NadekoBot.Modules.Administration
|
|||||||
catch { }
|
catch { }
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async void _client_UserPresenceUpdated(Optional<SocketGuild> optGuild, SocketUser usr, SocketPresence before, SocketPresence after)
|
private static async Task _client_UserPresenceUpdated(Optional<SocketGuild> optGuild, SocketUser usr, SocketPresence before, SocketPresence after)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -532,7 +532,7 @@ namespace NadekoBot.Modules.Administration
|
|||||||
catch { }
|
catch { }
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async void _client_UserLeft(IGuildUser usr)
|
private static async Task _client_UserLeft(IGuildUser usr)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -556,7 +556,7 @@ namespace NadekoBot.Modules.Administration
|
|||||||
catch { }
|
catch { }
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async void _client_UserJoined(IGuildUser usr)
|
private static async Task _client_UserJoined(IGuildUser usr)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -580,7 +580,7 @@ namespace NadekoBot.Modules.Administration
|
|||||||
catch (Exception ex) { _log.Warn(ex); }
|
catch (Exception ex) { _log.Warn(ex); }
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async void _client_UserUnbanned(IUser usr, IGuild guild)
|
private static async Task _client_UserUnbanned(IUser usr, IGuild guild)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -604,7 +604,7 @@ namespace NadekoBot.Modules.Administration
|
|||||||
catch (Exception ex) { _log.Warn(ex); }
|
catch (Exception ex) { _log.Warn(ex); }
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async void _client_UserBanned(IUser usr, IGuild guild)
|
private static async Task _client_UserBanned(IUser usr, IGuild guild)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -627,7 +627,7 @@ namespace NadekoBot.Modules.Administration
|
|||||||
catch (Exception ex) { _log.Warn(ex); }
|
catch (Exception ex) { _log.Warn(ex); }
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async void _client_MessageDeleted(ulong arg1, Optional<SocketMessage> imsg)
|
private static async Task _client_MessageDeleted(ulong arg1, Optional<SocketMessage> imsg)
|
||||||
{
|
{
|
||||||
|
|
||||||
try
|
try
|
||||||
@ -664,7 +664,7 @@ namespace NadekoBot.Modules.Administration
|
|||||||
catch { }
|
catch { }
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async void _client_MessageUpdated(Optional<SocketMessage> optmsg, SocketMessage imsg2)
|
private static async Task _client_MessageUpdated(Optional<SocketMessage> optmsg, SocketMessage imsg2)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -55,7 +55,7 @@ namespace NadekoBot.Modules.Administration
|
|||||||
_log.Debug($"Loaded in {sw.Elapsed.TotalSeconds:F2}s");
|
_log.Debug($"Loaded in {sw.Elapsed.TotalSeconds:F2}s");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async void Client_UserJoined(IGuildUser usr)
|
private static async Task Client_UserJoined(IGuildUser usr)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -67,7 +67,7 @@ namespace NadekoBot.Modules.Administration
|
|||||||
|
|
||||||
public static Dictionary<string, Func<string>> PlayingPlaceholders { get; } =
|
public static Dictionary<string, Func<string>> PlayingPlaceholders { get; } =
|
||||||
new Dictionary<string, Func<string>> {
|
new Dictionary<string, Func<string>> {
|
||||||
{"%servers%", () => NadekoBot.Client.GetGuildsCount().ToString()},
|
{"%servers%", () => NadekoBot.Client.GetGuildCount().ToString()},
|
||||||
{"%users%", () => NadekoBot.Client.GetGuilds().Sum(s => s.Users.Count).ToString()},
|
{"%users%", () => NadekoBot.Client.GetGuilds().Sum(s => s.Users.Count).ToString()},
|
||||||
{"%playing%", () => {
|
{"%playing%", () => {
|
||||||
var cnt = Music.Music.MusicPlayers.Count(kvp => kvp.Value.CurrentSong != null);
|
var cnt = Music.Music.MusicPlayers.Count(kvp => kvp.Value.CurrentSong != null);
|
||||||
|
@ -26,7 +26,7 @@ namespace NadekoBot.Modules.Administration
|
|||||||
_log = LogManager.GetCurrentClassLogger();
|
_log = LogManager.GetCurrentClassLogger();
|
||||||
}
|
}
|
||||||
//todo optimize ASAP
|
//todo optimize ASAP
|
||||||
private static async void UserLeft(IGuildUser user)
|
private static async Task UserLeft(IGuildUser user)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -58,7 +58,7 @@ namespace NadekoBot.Modules.Administration
|
|||||||
catch { }
|
catch { }
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async void UserJoined(IGuildUser user)
|
private static async Task UserJoined(IGuildUser user)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -36,7 +36,7 @@ namespace NadekoBot.Modules.Administration
|
|||||||
_log.Debug($"Loaded in {sw.Elapsed.TotalSeconds:F2}s");
|
_log.Debug($"Loaded in {sw.Elapsed.TotalSeconds:F2}s");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async void UserUpdatedEventHandler(SocketUser iuser, SocketVoiceState before, SocketVoiceState after)
|
private static async Task UserUpdatedEventHandler(SocketUser iuser, SocketVoiceState before, SocketVoiceState after)
|
||||||
{
|
{
|
||||||
var user = (iuser as SocketGuildUser);
|
var user = (iuser as SocketGuildUser);
|
||||||
var guild = user?.Guild;
|
var guild = user?.Guild;
|
||||||
|
@ -207,15 +207,15 @@ namespace NadekoBot.Modules.Gambling
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Client_MessageReceived(SocketMessage imsg)
|
private Task Client_MessageReceived(SocketMessage imsg)
|
||||||
{
|
{
|
||||||
var msg = imsg as SocketUserMessage;
|
var msg = imsg as SocketUserMessage;
|
||||||
if (msg == null)
|
if (msg == null)
|
||||||
return;
|
return Task.CompletedTask;
|
||||||
if (msg.IsAuthor() || !(imsg.Channel is ITextChannel) || imsg.Channel != raceChannel)
|
if (msg.IsAuthor() || !(imsg.Channel is ITextChannel) || imsg.Channel != raceChannel)
|
||||||
return;
|
return Task.CompletedTask;
|
||||||
messagesSinceGameStarted++;
|
messagesSinceGameStarted++;
|
||||||
return;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task CheckForFullGameAsync(CancellationToken cancelToken)
|
private async Task CheckForFullGameAsync(CancellationToken cancelToken)
|
||||||
|
@ -168,7 +168,7 @@ namespace NadekoBot.Modules.Games
|
|||||||
await End().ConfigureAwait(false);
|
await End().ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void PotentialAcro(SocketMessage arg)
|
private async Task PotentialAcro(SocketMessage arg)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -114,7 +114,7 @@ namespace NadekoBot.Modules.Games.Commands.Hangman
|
|||||||
await GameChannel.EmbedAsync(embed.WithOkColor()).ConfigureAwait(false);
|
await GameChannel.EmbedAsync(embed.WithOkColor()).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void PotentialGuess(SocketMessage msg)
|
private async Task PotentialGuess(SocketMessage msg)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -51,7 +51,7 @@ namespace NadekoBot.Modules.Games
|
|||||||
.SelectMany(c => c.GenerateCurrencyChannelIds.Select(obj => obj.ChannelId)));
|
.SelectMany(c => c.GenerateCurrencyChannelIds.Select(obj => obj.ChannelId)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async void PotentialFlowerGeneration(SocketMessage imsg)
|
private static async Task PotentialFlowerGeneration(SocketMessage imsg)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -153,7 +153,7 @@ namespace NadekoBot.Modules.Games
|
|||||||
await originalMessage.Channel.EmbedAsync(GetStats("POLL CLOSED")).ConfigureAwait(false);
|
await originalMessage.Channel.EmbedAsync(GetStats("POLL CLOSED")).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void Vote(SocketMessage imsg)
|
private async Task Vote(SocketMessage imsg)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -106,7 +106,7 @@ namespace NadekoBot.Modules.Games
|
|||||||
NadekoBot.Client.MessageReceived += AnswerReceived;
|
NadekoBot.Client.MessageReceived += AnswerReceived;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void AnswerReceived(SocketMessage imsg)
|
private async Task AnswerReceived(SocketMessage imsg)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -143,7 +143,7 @@ namespace NadekoBot.Modules.Games.Trivia
|
|||||||
try { await channel.SendConfirmAsync("Trivia Game", "Stopping after this question.").ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); }
|
try { await channel.SendConfirmAsync("Trivia Game", "Stopping after this question.").ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); }
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void PotentialGuess(SocketMessage imsg)
|
private async Task PotentialGuess(SocketMessage imsg)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -37,7 +37,7 @@ namespace NadekoBot.Modules.Music
|
|||||||
Directory.CreateDirectory(MusicDataPath);
|
Directory.CreateDirectory(MusicDataPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async void Client_UserVoiceStateUpdated(SocketUser iusr, SocketVoiceState oldState, SocketVoiceState newState)
|
private static async Task Client_UserVoiceStateUpdated(SocketUser iusr, SocketVoiceState oldState, SocketVoiceState newState)
|
||||||
{
|
{
|
||||||
var usr = iusr as SocketGuildUser;
|
var usr = iusr as SocketGuildUser;
|
||||||
if (usr == null ||
|
if (usr == null ||
|
||||||
|
@ -283,7 +283,7 @@ namespace NadekoBot.Modules.Utility
|
|||||||
.AddField(efb => efb.WithName(Format.Bold("Memory")).WithValue($"{stats.Heap} MB").WithIsInline(true))
|
.AddField(efb => efb.WithName(Format.Bold("Memory")).WithValue($"{stats.Heap} MB").WithIsInline(true))
|
||||||
.AddField(efb => efb.WithName(Format.Bold("Owner ID(s)")).WithValue(string.Join("\n", NadekoBot.Credentials.OwnerIds)).WithIsInline(true))
|
.AddField(efb => efb.WithName(Format.Bold("Owner ID(s)")).WithValue(string.Join("\n", NadekoBot.Credentials.OwnerIds)).WithIsInline(true))
|
||||||
.AddField(efb => efb.WithName(Format.Bold("Uptime")).WithValue(stats.GetUptimeString("\n")).WithIsInline(true))
|
.AddField(efb => efb.WithName(Format.Bold("Uptime")).WithValue(stats.GetUptimeString("\n")).WithIsInline(true))
|
||||||
.AddField(efb => efb.WithName(Format.Bold("Presence")).WithValue($"{NadekoBot.Client.GetGuildsCount()} Servers\n{stats.TextChannels} Text Channels\n{stats.VoiceChannels} Voice Channels").WithIsInline(true))
|
.AddField(efb => efb.WithName(Format.Bold("Presence")).WithValue($"{NadekoBot.Client.GetGuildCount()} Servers\n{stats.TextChannels} Text Channels\n{stats.VoiceChannels} Voice Channels").WithIsInline(true))
|
||||||
#if !GLOBAL_NADEKO
|
#if !GLOBAL_NADEKO
|
||||||
.WithFooter(efb => efb.WithText($"Playing {Music.Music.MusicPlayers.Where(mp => mp.Value.CurrentSong != null).Count()} songs, {Music.Music.MusicPlayers.Sum(mp => mp.Value.Playlist.Count)} queued."))
|
.WithFooter(efb => efb.WithText($"Playing {Music.Music.MusicPlayers.Where(mp => mp.Value.CurrentSong != null).Count()} songs, {Music.Music.MusicPlayers.Sum(mp => mp.Value.Playlist.Count)} queued."))
|
||||||
#endif
|
#endif
|
||||||
|
@ -180,7 +180,7 @@ namespace NadekoBot.Services
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void MessageReceivedHandler(SocketMessage msg)
|
private async Task MessageReceivedHandler(SocketMessage msg)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -228,7 +228,7 @@ namespace NadekoBot.Services
|
|||||||
string messageContent = usrMsg.Content;
|
string messageContent = usrMsg.Content;
|
||||||
|
|
||||||
// execute the command and measure the time it took
|
// execute the command and measure the time it took
|
||||||
var exec = await ExecuteCommand(new CommandContext(_client.MainClient, usrMsg), messageContent, DependencyMap.Empty, MultiMatchHandling.Best);
|
var exec = await ExecuteCommand(new CommandContext(_client, usrMsg), messageContent, DependencyMap.Empty, MultiMatchHandling.Best);
|
||||||
execTime = Environment.TickCount - execTime;
|
execTime = Environment.TickCount - execTime;
|
||||||
|
|
||||||
if (exec.Result.IsSuccess)
|
if (exec.Result.IsSuccess)
|
||||||
|
@ -26,7 +26,7 @@ namespace NadekoBot.Services.Discord
|
|||||||
NadekoBot.Client.ReactionsCleared += Discord_ReactionsCleared;
|
NadekoBot.Client.ReactionsCleared += Discord_ReactionsCleared;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Discord_ReactionsCleared(ulong messageId, Optional<SocketUserMessage> reaction)
|
private Task Discord_ReactionsCleared(ulong messageId, Optional<SocketUserMessage> reaction)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -34,9 +34,11 @@ namespace NadekoBot.Services.Discord
|
|||||||
OnReactionsCleared?.Invoke();
|
OnReactionsCleared?.Invoke();
|
||||||
}
|
}
|
||||||
catch { }
|
catch { }
|
||||||
|
|
||||||
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Discord_ReactionRemoved(ulong messageId, Optional<SocketUserMessage> arg2, SocketReaction reaction)
|
private Task Discord_ReactionRemoved(ulong messageId, Optional<SocketUserMessage> arg2, SocketReaction reaction)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -44,9 +46,11 @@ namespace NadekoBot.Services.Discord
|
|||||||
OnReactionRemoved?.Invoke(reaction);
|
OnReactionRemoved?.Invoke(reaction);
|
||||||
}
|
}
|
||||||
catch { }
|
catch { }
|
||||||
|
|
||||||
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Discord_ReactionAdded(ulong messageId, Optional<SocketUserMessage> message, SocketReaction reaction)
|
private Task Discord_ReactionAdded(ulong messageId, Optional<SocketUserMessage> message, SocketReaction reaction)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -54,6 +58,8 @@ namespace NadekoBot.Services.Discord
|
|||||||
OnReactionAdded?.Invoke(reaction);
|
OnReactionAdded?.Invoke(reaction);
|
||||||
}
|
}
|
||||||
catch { }
|
catch { }
|
||||||
|
|
||||||
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UnsubAll()
|
public void UnsubAll()
|
||||||
|
@ -46,6 +46,8 @@ namespace NadekoBot.Services.Impl
|
|||||||
++_textChannels;
|
++_textChannels;
|
||||||
else if (c is IVoiceChannel)
|
else if (c is IVoiceChannel)
|
||||||
++_voiceChannels;
|
++_voiceChannels;
|
||||||
|
|
||||||
|
return Task.CompletedTask;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.client.ChannelDestroyed += (c) =>
|
this.client.ChannelDestroyed += (c) =>
|
||||||
@ -54,6 +56,8 @@ namespace NadekoBot.Services.Impl
|
|||||||
--_textChannels;
|
--_textChannels;
|
||||||
else if (c is IVoiceChannel)
|
else if (c is IVoiceChannel)
|
||||||
--_voiceChannels;
|
--_voiceChannels;
|
||||||
|
|
||||||
|
return Task.CompletedTask;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.client.JoinedGuild += (g) =>
|
this.client.JoinedGuild += (g) =>
|
||||||
@ -62,6 +66,8 @@ namespace NadekoBot.Services.Impl
|
|||||||
var vc = g.Channels.Count - tc;
|
var vc = g.Channels.Count - tc;
|
||||||
_textChannels += tc;
|
_textChannels += tc;
|
||||||
_voiceChannels += vc;
|
_voiceChannels += vc;
|
||||||
|
|
||||||
|
return Task.CompletedTask;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.client.LeftGuild += (g) =>
|
this.client.LeftGuild += (g) =>
|
||||||
@ -70,6 +76,8 @@ namespace NadekoBot.Services.Impl
|
|||||||
var vc = g.Channels.Count - tc;
|
var vc = g.Channels.Count - tc;
|
||||||
_textChannels -= tc;
|
_textChannels -= tc;
|
||||||
_voiceChannels -= vc;
|
_voiceChannels -= vc;
|
||||||
|
|
||||||
|
return Task.CompletedTask;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.carbonitexTimer = new Timer(async (state) =>
|
this.carbonitexTimer = new Timer(async (state) =>
|
||||||
|
@ -180,9 +180,7 @@ namespace NadekoBot
|
|||||||
|
|
||||||
public Task SetStream(string name, string url) => Task.WhenAll(Clients.Select(ms => ms.SetGameAsync(name, url, StreamType.Twitch)));
|
public Task SetStream(string name, string url) => Task.WhenAll(Clients.Select(ms => ms.SetGameAsync(name, url, StreamType.Twitch)));
|
||||||
|
|
||||||
public Task SetStatus(SettableUserStatus status) => Task.WhenAll(Clients.Select(ms => ms.SetStatusAsync(SettableUserStatusToUserStatus(status))));
|
//public Task SetStatus(SettableUserStatus status) => Task.WhenAll(Clients.Select(ms => ms.SetStatusAsync(SettableUserStatusToUserStatus(status))));
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum SettableUserStatus
|
public enum SettableUserStatus
|
||||||
|
Loading…
Reference in New Issue
Block a user