private async Task HandleSettingsUpdate(RawWebsocketMessage msg) { var newSettings = SettingsUpdate.Create(msg); if (newSettings.data == null) { return; } var SettingsType = typeof(EventVcSettings); var SettingsProps = SettingsType.GetProperties(); var dt = newSettings.data.GetType(); var tmpSettings = settings.Clone(); foreach (var prop in dt.GetProperties()) { if (SettingsProps.Any(x => x.Name == prop.Name)) { var setProp = SettingsProps.First(x => x.Name == prop.Name); setProp.SetValue(tmpSettings, prop.GetValue(newSettings.data)); } } }
public async Task HandleVoicekickAdd(RawWebsocketMessage msg) { var req = VoicekickPacket.FromRaw(msg.rawMessage); var user = await Global.GetSwissbotUser(req.target); if (user == null) { await msg.Sender.SendAsync(InvalidTargetPacket.Compile(msg.rawMessage, $"Invalid target, {req.target} does not exist!"), System.Net.WebSockets.WebSocketMessageType.Text, true, CancellationToken.None); return; } var VoicekickUser = new VoiceKickUser(user, req.expires); CurrentVoiceKicked.Add(VoicekickUser); SaveVoiceKicked(); WebSocketServer.PushEvent("events.voicekick.user.add", VoicekickUser); // Add them to the channel override var vc = client.GetGuild(Global.SwissGuildId).GetVoiceChannel(627906629047943238); await vc.AddPermissionOverwriteAsync(user, new OverwritePermissions(connect : PermValue.Deny, viewChannel : PermValue.Allow)); await user.ModifyAsync(x => x.Channel = null); // Get the times var date = (new DateTime(1970, 1, 1)).AddMilliseconds(req.expires); var tm = date - DateTime.UtcNow; // DM them var channel = await user.GetOrCreateDMChannelAsync(); await channel.SendMessageAsync("", false, new EmbedBuilder() { Title = "Hey!", Description = "You have been blocked from joining event vc, this could be because you were ruining the game for other people or you were being a general nuisance.\n" + $"Dont worry tho, you will be able to join in {Math.Floor(tm.TotalMinutes)} minutes, {tm.Seconds} seconds", Color = Color.Red, Fields = new List <EmbedFieldBuilder>() { new EmbedFieldBuilder() { Name = "Expires:", Value = date.ToString("R") } } }.WithCurrentTimestamp().Build()); }
private async Task HandleEntireChannelUnmute(RawWebsocketMessage msg) { // Here we dispatch the little workers of swissbot // First lets get everyone in VC var channel = client.GetGuild(Global.SwissGuildId).GetVoiceChannel(627906629047943238); // Check if there is anyone in VC if (channel.Users.Count == 0) { return; } // Unmute them! await SwissbotWorkerHandler.AssignTasks(WorkerTask.Mute, false, channel.Users.Where(x => x.IsMuted).Select(x => x.Id).ToArray()); }
public async Task HandleVoicestateUpdate(RawWebsocketMessage message) { // Get the packet VoiceSettingsChange packet; try { packet = JsonConvert.DeserializeObject <VoiceSettingsChange>(message.rawMessage); } catch (Exception x) { } // Update the voice channel foreach (var user in EventVCHandler.CurrentVcUsers) { } }
public async Task HandleVoicekickRevoke(RawWebsocketMessage msg) { VoicekickPacket req; try { req = VoicekickPacket.FromRaw(msg.rawMessage); } catch (Exception e) { return; } var user = CurrentVoiceKicked.FirstOrDefault(x => x.id == req.target.ToString()); if (user == null) { await msg.Sender.SendAsync(InvalidTargetPacket.Compile(msg.rawMessage, $"Invalid target, {req.target} does not exist!"), System.Net.WebSockets.WebSocketMessageType.Text, true, CancellationToken.None); return; } CurrentVoiceKicked.Remove(user); SaveVoiceKicked(); WebSocketServer.PushEvent("events.voicekick.user.remove", new { id = req.target.ToString() }); var vc = client.GetGuild(Global.SwissGuildId).GetVoiceChannel(627906629047943238); await vc.RemovePermissionOverwriteAsync(user.GetUser()); var channel = await user.GetUser().GetOrCreateDMChannelAsync(); await channel.SendMessageAsync("", false, new EmbedBuilder() { Title = "You can now join event vc", Description = "Your voicekick has been revoked by an event manager, you are now able to join back!", Color = Color.Green }.WithCurrentTimestamp().Build()); }
private async Task HandleUserActionEvent(RawWebsocketMessage msg) { // Get the data var data = EventVcUserAction.FromRaw(msg.rawMessage); if (data.action == EventVcUserAction.VcAction.Disconnect) { var user = await Global.GetSwissbotUser(data.targetUser); if (user == null) { return; } await user.ModifyAsync(x => x.Channel = null); } else { var vcAction = data.action == EventVcUserAction.VcAction.Mute ? WorkerTask.Mute : WorkerTask.Deafen; WorkerTaskCreator.CreateTask(vcAction, data.targetUser, data.value); } }
public async Task HandleGameStart(RawWebsocketMessage message) { }
public async Task HandleGameEnd(RawWebsocketMessage message) { }
public async Task HandlePermaMute(RawWebsocketMessage msg) { }