Ejemplo n.º 1
0
        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));
                }
            }
        }
Ejemplo n.º 2
0
        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());
        }
Ejemplo n.º 3
0
        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());
        }
Ejemplo n.º 4
0
        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)
            {
            }
        }
Ejemplo n.º 5
0
        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());
        }
Ejemplo n.º 6
0
        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);
            }
        }
Ejemplo n.º 7
0
 public async Task HandleGameStart(RawWebsocketMessage message)
 {
 }
Ejemplo n.º 8
0
 public async Task HandleGameEnd(RawWebsocketMessage message)
 {
 }
Ejemplo n.º 9
0
 public async Task HandlePermaMute(RawWebsocketMessage msg)
 {
 }