예제 #1
0
        public virtual async void OnMessageUpdate(IGatewayClient gatewayClient, Message message)
        {
            Channel guildChannel = await Channels.Find(message.ChannelId);

            Message messageOld = null;

            if (guildChannel is TextChannel textChannel)
            {
                messageOld = await textChannel.Messages.Find(message.Id);

                textChannel.UpdateMessage(ref message);
                message.Channel = textChannel;
            }
            else
            {
                Logger.Log(LoggingLevel.Warning, $"Fail cache message {message.Id}");
            }

            MessageUpdate?.Invoke(this, new ClientArgs <MessageUpdate>
            {
                GatewayClient = gatewayClient,
                Data          = new MessageUpdate
                {
                    Message    = message,
                    OldMessage = messageOld
                }
            });
        }
예제 #2
0
    void openMessage(MainData.FriendBody friend)
    {
        GameObject result = transform.FindChild("list").FindChild("result").gameObject;

        if (result.activeSelf)
        {
            backFromSearchReult();
        }
        backEvent = new EventDelegate(backFromMessage);
        transform.FindChild("title").FindChild("label").GetComponent <UILabel>().text = "和" + friend.fName + "的聊天";
        messageListContainer.parent.parent.parent.gameObject.SetActive(false);
        messageDetailContainer.parent.parent.gameObject.SetActive(true);
        MessageUpdate messageUpdate = messageDetailContainer.GetComponent <MessageUpdate>();

        messageUpdate.friend = friend;
        messageUpdate.count  = 0;
        //聊天内容显示
        refreshMessage(friend);
        Transform inputers = messageDetailContainer.parent.parent.FindChild("inputers");
        //发送文字逻辑
        UIButton      send_button = inputers.FindChild("send").GetComponent <UIButton>();
        EventDelegate send_event  = new EventDelegate(this, "sendStringMessage");

        send_event.parameters[0]     = new EventDelegate.Parameter();
        send_event.parameters[0].obj = friend;
        send_button.onClick.Clear();
        send_button.onClick.Add(send_event);
        //发送图片逻辑
        send_button = inputers.FindChild("add-pic").GetComponent <UIButton>();
        send_event  = new EventDelegate(this, "openPhotogapher");
        send_event.parameters[0]     = new EventDelegate.Parameter();
        send_event.parameters[0].obj = friend;
        send_button.onClick.Clear();
        send_button.onClick.Add(send_event);
    }
예제 #3
0
    public void sendMove(int checker, int[] pos)
    {
        var msg = new MessageUpdate();

        msg.checkerMoved = checker;
        msg.winCondition = 0;
        msg.movedTo      = pos;
        manager.client.Send(MyMsgType.Move, msg);
        Debug.Log("sent");
    }
예제 #4
0
        public bool MessageUpdate(MessageUpdate messageUpdate)
        {
            var entity = _ctx.Messages.Single(m => m.MessageId == messageUpdate.MessageId);

            entity.MessageId    = messageUpdate.MessageId;
            entity.Content      = messageUpdate.Content;
            entity.IsRead       = messageUpdate.IsRead;
            entity.ModifiedDate = DateTimeOffset.UtcNow;

            return(_ctx.SaveChanges() == 1);
        }
예제 #5
0
        private void ModifyElementFromCode(MessageUpdate msg, Configurations config)
        {
            InitializeSaveChanges(msg, config, out TestALMethod testALMethod, out int scenarioLine, out int elementLine, false, out List <string> fileContent, out ScenarioElementType scenarioElementType, out string oldProcedureNameOfElement, out string newProcedureNameOfElement);
            if (scenarioLine == 0 || elementLine == 0)
            {
                return;
            }

            fileContent.RemoveAt(elementLine);
            Library.Helpers.ALTestMethodHelper.AddElement(ref fileContent, msg.NewValue, scenarioElementType, ref elementLine);
            Library.Helpers.ALTestCodeunitHelper.RenameOrOnlyAddNewProcedure(oldProcedureNameOfElement, newProcedureNameOfElement, ref fileContent, ref elementLine, config.addException);
            WriteFile(msg.FsPath, fileContent);
        }
예제 #6
0
        private void InitializeSaveChanges(MessageUpdate msg, Configurations config, out TestALMethod testALMethod, out int scenarioLine, out int elementLine, bool elementOfNewValue, out List <string> fileContent, out ScenarioElementType scenarioElementType, out string oldProcedureNameOfElement, out string newProcedureNameOfElement)
        {
            string               scenarioName         = msg.Scenario;
            string               fsPath               = msg.FsPath;
            string               elementOldValue      = msg.OldValue;
            string               elementNewValue      = msg.NewValue;
            TypeChanged          typeChanged          = msg.Type;
            ALTestCodeunitReader alTestCodeunitReader = new ALTestCodeunitReader();
            TestALCodeunit       testCodeunit         = (TestALCodeunit)alTestCodeunitReader.ReadSingle(fsPath);

            testALMethod        = testCodeunit.Methods.First(m => (m.Scenario != null) && (m.Scenario.Name == scenarioName));
            scenarioElementType = Library.ALMethodHelper.ToEnum <ScenarioElementType>(typeChanged.ToString().ToUpper());

            if (elementOldValue == null)
            {
                oldProcedureNameOfElement = "";
            }
            else
            {
                oldProcedureNameOfElement = Library.ALMethodHelper.GetProcedurename(scenarioElementType, elementOldValue, config.prefixGiven, config.prefixWhen, config.prefixThen);
            }
            if (elementNewValue == null)
            {
                newProcedureNameOfElement = "";
            }
            else
            {
                newProcedureNameOfElement = Library.ALMethodHelper.GetProcedurename(scenarioElementType, elementNewValue, config.prefixGiven, config.prefixWhen, config.prefixThen);
            }

            fileContent  = File.ReadAllLines(fsPath).ToList();
            elementLine  = 0;
            scenarioLine = Library.Helpers.ALTestCodeunitHelper.FindScenarioLine(testALMethod.Scenario.Name, fileContent);
            if (scenarioLine == 0)
            {
                return;
            }

            if (elementOfNewValue)
            {
                elementLine = Library.Helpers.ALTestCodeunitHelper.FindElementLine(fileContent, scenarioElementType, elementNewValue, scenarioLine);
            }
            else
            {
                elementLine = Library.Helpers.ALTestCodeunitHelper.FindElementLine(fileContent, scenarioElementType, elementOldValue, scenarioLine);
            }
            if (elementLine == 0)
            {
                return;
            }
        }
예제 #7
0
        // api/Message/Update
        public IHttpActionResult Put(MessageUpdate message)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (!_messageService.MessageUpdate(message))
            {
                return(InternalServerError());
            }

            return(Ok());
        }
예제 #8
0
 public void SaveChanges(MessageUpdate msg, Configurations config)
 {
     if (msg.State == MessageState.New)
     {
         AddNewElementToCode(msg, config);
     }
     else if (msg.State == MessageState.Deleted)
     {
         DeleteElementFromCode(msg, config);
     }
     else if (msg.State == MessageState.Modified)
     {
         ModifyElementFromCode(msg, config);
     }
 }
예제 #9
0
        private void DeleteElementFromCode(MessageUpdate msg, Configurations config)
        {
            InitializeSaveChanges(msg, config, out TestALMethod testALMethod, out int scenarioLine, out int elementLine, true, out List <string> fileContent, out ScenarioElementType scenarioElementType, out string dummyProcedureNameOfElement, out string procedureNameOfElement);
            if (scenarioLine == 0 || elementLine == 0)
            {
                return;
            }

            Library.Helpers.ALTestMethodHelper.DeleteElementWithProcedureCall(ref fileContent, procedureNameOfElement, elementLine);
            if (msg.DeleteProcedure)
            {
                Library.Helpers.ALTestCodeunitHelper.DeleteProcedure(ref fileContent, procedureNameOfElement);
            }
            WriteFile(msg.FsPath, fileContent);
        }
예제 #10
0
        public bool checkSaveChanges(MessageUpdate msg, Configurations config)
        {
            bool procedureCanBeRemovedAfterwards = false;

            if (msg.State == MessageState.Deleted)
            {
                ScenarioElementType scenarioElementType = Library.ALMethodHelper.ToEnum <ScenarioElementType>(msg.Type.ToString().ToUpper());
                string        procedureNameOfElement    = Library.ALMethodHelper.GetProcedurename(scenarioElementType, msg.NewValue, config.prefixGiven, config.prefixWhen, config.prefixThen);
                List <string> fileContent = File.ReadAllLines(msg.FsPath).ToList();
                Range?        range       = Library.Helpers.ALTestCodeunitHelper.FindProcedureDeclarationRange(fileContent, procedureNameOfElement);
                if (range.HasValue)
                {
                    int[] usagesOfProcedure = Library.Helpers.ALTestCodeunitHelper.FindLinesWhereProcedureIsCalled(fileContent, procedureNameOfElement);
                    procedureCanBeRemovedAfterwards = usagesOfProcedure.Length <= 1;
                }
            }
            return(procedureCanBeRemovedAfterwards);
        }
예제 #11
0
        private void updateBranch_Click(object sender, EventArgs e)
        {
            Int32 selectedRowCount = dataGridView1.Rows.GetRowCount(DataGridViewElementStates.Selected);

            if (selectedRowCount > 0)
            {
                //int lignes = 0;
                for (int i = 0; i < selectedRowCount; i++)
                {
                    int    id = Int32.Parse(dataGridView1.SelectedRows[i].Cells["Id_Filière"].Value.ToString());
                    string branchNameTable = dataGridView1.SelectedRows[i].Cells["Nom_Filière"].Value.ToString();
                    try
                    {
                        MessageUpdate msg = new MessageUpdate();
                        msg.UpdateNamebranch.Text = branchNameTable;
                        msg.ShowDialog();
                        Request request = new Request(RequestType.UpdateBranch, new Branch(id, msg.UpdateNamebranch.Text));
                        byte[]  buffer  = SerializeDeserializeObject.Serialize(request);
                        socket.Send(buffer);
                        buffer = new byte[1024];
                        int size = socket.Receive(buffer);
                        Array.Resize(ref buffer, size);
                        bool answer = (bool)SerializeDeserializeObject.Deserialize(buffer);
                        if (answer)
                        {
                            new MessageBx("La modification a réussi", "Modification").ShowDialog();
                            actualiserLeTableau();
                        }
                        else
                        {
                            new MessageBx("Nous avons rencontré un problème!\nRéessayer plus tard.", "Problème de serveur").ShowDialog();
                        }
                    }
                    catch (Exception)
                    {
                        new MessageBx("Nous avons rencontré un problème!\nRéessayer plus tard.", "Problème de serveur").ShowDialog();
                    }
                }
            }
            else
            {
                new MessageBx("Veuillez sélectionner une ligne", "Attention").ShowDialog();
            }
        }
예제 #12
0
        private void AddNewElementToCode(MessageUpdate msg, Configurations config)
        {
            string      scenarioName = msg.Scenario;
            TypeChanged typeChanged  = msg.Type;
            string      fsPath       = msg.FsPath;
            string      elementValue = msg.NewValue;

            if (typeChanged == TypeChanged.Feature)
            {
                List <string> fileContent = new List <string>();
                fileContent.AddRange(Library.Helpers.ALTestCodeunitHelper.GetDefaultTestCodeunitText(elementValue));
                WriteFile(fsPath, fileContent);
            }
            else
            {
                InitializeSaveChanges(msg, config, out TestALMethod testALMethod, out int scenarioLine, out int elementLine, false, out List <string> fileContent, out ScenarioElementType scenarioElementType, out string dummyProcedureNameOfElement, out string procedureNameToCall);
                if (scenarioLine == 0)
                {
                    return;
                }

                int lineToInsert = Library.ALMethodHelper.FindLineToInsertElement(testALMethod, fileContent, scenarioLine, scenarioElementType);
                if (lineToInsert == 0)
                {
                    return;
                }

                bool addLineBreak = testALMethod.Scenario.Elements.Where(e => e.Type == scenarioElementType).Count() == 0;

                Library.Helpers.ALTestMethodHelper.AddElement(ref fileContent, elementValue, scenarioElementType, ref lineToInsert);
                Library.Helpers.ALTestMethodHelper.AddProcedureCall(ref fileContent, procedureNameToCall, ref lineToInsert);
                Library.Helpers.ALTestCodeunitHelper.AddProcedure(ref fileContent, procedureNameToCall, config.addException);

                WriteFile(fsPath, fileContent);
            }
        }
예제 #13
0
 public override void MessageUpdated(TwilioChatClient client, Channel channel, Message message, MessageUpdate updated)
 {
     Logger.Info($"ChatClient: {client}", $"Channel: {channel.Sid} MessageUpdated: {message.Sid}, reason: {updated}");
 }
예제 #14
0
 public override void MessageUpdated(TwilioChatClient client, Channel channel, Message message, MessageUpdate updated)
 {
     Logger.Info($"ChatClient: {client}", $"Channel: {channel.Sid} MessageUpdated: {message.Sid}, reason: {updated}");
     if (updated == MessageUpdate.Attributes)
     {
         Logger.Info($"ChatClient: {client}", $"Message attributes: {message.Attributes.ToDebugLog()}");
     }
 }
예제 #15
0
 Task <MessageUpdateResponse> IChatApi.Update(MessageUpdate messageUpdate, CancellationToken?cancellationToken)
 {
     throw new NotImplementedException();
 }
 public async Task CheckSaveChanges(MessageUpdate msg, Configurations config)
 {
     bool procedureCanBeRemovedAfterwards = objectService.checkSaveChanges(msg, config);
     await Clients.All.CheckSaveChangesResponse(procedureCanBeRemovedAfterwards);
 }
 public async Task SaveChanges(MessageUpdate msg, Configurations config)
 {
     objectService.SaveChanges(msg, config);
     await Clients.All.SaveChangesResponse(true);
 }
예제 #18
0
        private void HandleDispatchEvent(GatewayPayload evnt, TaskCompletionSource <bool> readySignal)
        {
            switch (evnt.DispatchType)
            {
            case GatewayDispatchType.Ready:
                var readyEvent = evnt.Data as ReadyEvent;
                SetSession(readyEvent.SessionId);
                readySignal.TrySetResult(true);
                Ready?.Invoke(readyEvent);
                break;

            case GatewayDispatchType.Resumed:
                readySignal.TrySetResult(true);
                Resumed?.Invoke();
                break;

            case GatewayDispatchType.GuildCreate: GuildCreate?.Invoke(evnt.Data as GatewayGuild); break;

            case GatewayDispatchType.GuildUpdate: GuildUpdate?.Invoke(evnt.Data as Guild); break;

            case GatewayDispatchType.GuildDelete: GuildDelete?.Invoke(evnt.Data as UnavailableGuild); break;

            case GatewayDispatchType.ChannelCreate: ChannelCreate?.Invoke(evnt.Data as Channel); break;

            case GatewayDispatchType.ChannelUpdate: ChannelUpdate?.Invoke(evnt.Data as Channel); break;

            case GatewayDispatchType.ChannelDelete: ChannelDelete?.Invoke(evnt.Data as Channel); break;

            case GatewayDispatchType.ChannelPinsUpdate: ChannelPinsUpdate?.Invoke(evnt.Data as ChannelPinsUpdateEvent); break;

            case GatewayDispatchType.GuildMemberAdd: GuildMemberAdd?.Invoke(evnt.Data as GuildMemberAddEvent); break;

            case GatewayDispatchType.GuildMemberUpdate: GuildMemberUpdate?.Invoke(evnt.Data as GuildMemberUpdateEvent); break;

            case GatewayDispatchType.GuildMemberRemove: GuildMemberRemove?.Invoke(evnt.Data as GuildMemberRemoveEvent); break;

            case GatewayDispatchType.GuildMembersChunk: GuildMembersChunk?.Invoke(evnt.Data as GuildMembersChunkEvent); break;

            case GatewayDispatchType.GuildRoleCreate: GuildRoleCreate?.Invoke(evnt.Data as GuildRoleCreateEvent); break;

            case GatewayDispatchType.GuildRoleUpdate: GuildRoleUpdate?.Invoke(evnt.Data as GuildRoleUpdateEvent); break;

            case GatewayDispatchType.GuildRoleDelete: GuildRoleDelete?.Invoke(evnt.Data as GuildRoleDeleteEvent); break;

            case GatewayDispatchType.GuildBanAdd: GuildBanAdd?.Invoke(evnt.Data as GuildBanAddEvent); break;

            case GatewayDispatchType.GuildBanRemove: GuildBanRemove?.Invoke(evnt.Data as GuildBanRemoveEvent); break;

            case GatewayDispatchType.GuildEmojisUpdate: GuildEmojisUpdate?.Invoke(evnt.Data as GuildEmojiUpdateEvent); break;

            case GatewayDispatchType.GuildIntegrationsUpdate: GuildIntegrationsUpdate?.Invoke(evnt.Data as GuildIntegrationsUpdateEvent); break;

            case GatewayDispatchType.MessageCreate: MessageCreate?.Invoke(evnt.Data as Message); break;

            case GatewayDispatchType.MessageUpdate: MessageUpdate?.Invoke(evnt.Data as Message); break;

            case GatewayDispatchType.MessageDelete: MessageDelete?.Invoke(evnt.Data as MessageDeleteEvent); break;

            case GatewayDispatchType.MessageDeleteBulk: MessageDeleteBulk?.Invoke(evnt.Data as MessageDeleteBulkEvent); break;

            case GatewayDispatchType.MessageReactionAdd: MessageReactionAdd?.Invoke(evnt.Data as MessageReactionAddEvent); break;

            case GatewayDispatchType.MessageReactionRemove: MessageReactionRemove?.Invoke(evnt.Data as MessageReactionRemoveEvent); break;

            case GatewayDispatchType.MessageReactionRemoveAll: MessageReactionRemoveAll?.Invoke(evnt.Data as MessageReactionRemoveAllEvent); break;

            case GatewayDispatchType.PresenceUpdate: PresenceUpdate?.Invoke(evnt.Data as Presence); break;

            case GatewayDispatchType.UserUpdate: UserUpdate?.Invoke(evnt.Data as User); break;

            case GatewayDispatchType.TypingStart: TypingStart?.Invoke(evnt.Data as TypingStartEvent); break;

            case GatewayDispatchType.VoiceStateUpdate: VoiceStateUpdate?.Invoke(evnt.Data as VoiceState); break;

            case GatewayDispatchType.VoiceServerUpdate: VoiceServerUpdate?.Invoke(evnt.Data as VoiceServerUpdateEvent); break;

            case GatewayDispatchType.WebhooksUpdate: WebhooksUpdate?.Invoke(evnt.Data as WebhooksUpdateEvent); break;
            }
        }
예제 #19
0
        //TODO: Typing Start
        //TODO: Integrations
        //TODO: User Updates
        //TODO: Voice Chat

        private void GatewayMessageHandler(string eventName, string payload)
        {
            _Logger?.Debug($"{eventName} - {payload}");

            var eventValue = (Events)Enum.Parse(typeof(Events), eventName);

            var eventPayload = JObject.Parse(payload);

            switch (eventValue)
            {
            case Events.READY:
            {
                var guilds = eventPayload["guilds"] as JArray;

                foreach (var guild in guilds)
                {
                    var g = new Guild {
                        Id = guild["id"].ToString(), Unavailable = guild["unavailable"].ToObject <bool>()
                    };

                    Guilds.Add(g.Id, g);
                }

                break;
            }

            case Events.GUILD_CREATE:
            {
                Guild g = null;
                if (Guilds.ContainsKey(eventPayload["id"].ToString()))
                {
                    g = Guilds[eventPayload["id"].ToString()];
                }
                else
                {
                    g = new Guild()
                    {
                        Id = eventPayload["id"].ToString()
                    };
                    Guilds.Add(g.Id, g);
                }

                JsonConvert.PopulateObject(payload, g);

                foreach (var channel in g.Channels)
                {
                    if (!Channels.ContainsKey(channel.Key))
                    {
                        Channels.Add(channel.Key, channel.Value);
                    }

                    channel.Value.Guild_Id = g.Id;
                    channel.Value.Guild    = g;
                }

                foreach (var member in g.Members)
                {
                    if (!Users.ContainsKey(member.Key))
                    {
                        Users.Add(member.Key, member.Value.User);
                    }
                    else if (member.Value.User != Users[member.Key])
                    {
                        member.Value.User = Users[member.Key];
                    }

                    member.Value.Guild = g;
                }

                foreach (var presence in g.Presences.Values)
                {
                    presence.User = Users[presence.User.Id];
                }

                g.UpdateAllUserPermissions();

                GuildCreated?.Invoke(g);
                break;
            }

            case Events.GUILD_UPDATE:
            {
                var g = Guilds[eventPayload["id"].ToString()];

                // TODO: Double check that this is the correct behavior.
                JsonConvert.PopulateObject(payload, g);

                GuildUpdated?.Invoke(g);
                break;
            }

            case Events.GUILD_DELETE:
            {
                var g = Guilds[eventPayload["id"].ToString()];
                Guilds.Remove(eventPayload["id"].ToString());

                GuildDeleted?.Invoke(g);
                break;
            }

            case Events.CHANNEL_CREATE:
            {
                var c = eventPayload.ToObject <GuildChannel>();
                var g = Guilds[c.Guild_Id];

                c.Guild = g;
                g.Channels.Add(c.Id, c);
                Channels.Add(c.Id, c);

                ChannelCreate?.Invoke(g, c);
                break;
            }

            case Events.CHANNEL_UPDATE:
            {
                var g = Guilds[eventPayload["guild_id"].ToString()];
                var c = g.Channels[eventPayload["id"].ToString()];

                JsonConvert.PopulateObject(payload, c);

                ChannelUpdate?.Invoke(g, c);
                break;
            }

            case Events.CHANNEL_DELETE:
            {
                var g = Guilds[eventPayload["guild_id"].ToString()];
                var c = g.Channels[eventPayload["id"].ToString()];

                g.Channels.Remove(c.Id);
                Channels.Remove(c.Id);

                ChannelDelete?.Invoke(g, c);
                break;
            }

            case Events.GUILD_BAN_ADD:
            {
                // TODO: User knows about bans
                var g = Guilds[eventPayload["guild_id"].ToString()];
                var m = g.Members[eventPayload["id"].ToString()];

                Users[m.User.Id].Guilds.Remove(g);
                g.Members.Remove(m.User.Id);

                BanAdd?.Invoke(g, m.User);
                break;
            }

            case Events.GUILD_BAN_REMOVE:
            {
                var g = Guilds[eventPayload["guild_id"].ToString()];

                BanRemove?.Invoke(g, eventPayload.ToObject <DiscordUser>());
                break;
            }

            case Events.GUILD_EMOJIS_UPDATE:
            {
                var g = Guilds[eventPayload["guild_id"].ToString()];

                g.Emojis.Clear();

                JsonConvert.PopulateObject(payload, g);

                EmojiUpdate?.Invoke(g, eventPayload["emojis"].ToObject <List <Guild.Emoji> >());
                break;
            }

            case Events.GUILD_MEMBER_ADD:
            {
                var g = Guilds[eventPayload["guild_id"].ToString()];
                var m = eventPayload.ToObject <GuildMember>();

                if (!Users.ContainsKey(m.User.Id))
                {
                    Users.Add(m.User.Id, m.User);
                }
                else
                {
                    m.User = Users[m.User.Id];
                }

                g.Members.Add(m.User.Id, m);
                m.User.Guilds.Add(g);

                m.Guild = g;
                g.UpdateUserPermission(m);

                MemberAdd?.Invoke(g, m);
                break;
            }

            case Events.GUILD_MEMBER_REMOVE:
            {
                var g = Guilds[eventPayload["guild_id"].ToString()];
                var m = g.Members[eventPayload["user"]["id"].ToString()];

                g.Members.Remove(m.User.Id);
                m.User.Guilds.Remove(g);

                MemberRemove?.Invoke(g, m);
                break;
            }

            case Events.GUILD_MEMBER_UPDATE:
            {
                var g = Guilds[eventPayload["guild_id"].ToString()];
                var m = g.Members[eventPayload["user"]["id"].ToString()];

                JsonConvert.PopulateObject(payload, m);

                g.UpdateUserPermission(m);

                MemberUpdate?.Invoke(g, m);
                break;
            }

            case Events.GUILD_MEMBERS_CHUNK:
            {
                var g       = Guilds[eventPayload["guild_id"].ToString()];
                var members = eventPayload["members"].ToObject <List <GuildMember> >();

                foreach (var member in members)
                {
                    if (Users.ContainsKey(member.User.Id))
                    {
                        member.User = Users[member.User.Id];
                    }
                    else
                    {
                        Users.Add(member.User.Id, member.User);
                    }

                    g.Members.Remove(member.User.Id);
                    g.Members.Add(member.User.Id, member);
                }

                MemberChunkUpdate?.Invoke(g, members);
                break;
            }

            case Events.GUILD_ROLE_CREATE:
            {
                var g = Guilds[eventPayload["guild_id"].ToString()];
                var r = eventPayload["role"].ToObject <Guild.Role>();

                g.Roles.Add(r.Id, r);

                RoleCreate?.Invoke(g, r);
                break;
            }

            case Events.GUILD_ROLE_UPDATE:
            {
                var g = Guilds[eventPayload["guild_id"].ToString()];
                var r = g.Roles[eventPayload["role"]["id"].ToString()];

                JsonConvert.PopulateObject(eventPayload["role"].ToString(), r);

                RoleUpdate?.Invoke(g, r);
                break;
            }

            case Events.GUILD_ROLE_DELETE:
            {
                var g = Guilds[eventPayload["guild_id"].ToString()];
                var r = g.Roles[eventPayload["role_id"].ToString()];

                g.Roles.Remove(r.Id);

                RoleDelete?.Invoke(g, r);
                break;
            }

            case Events.MESSAGE_CREATE:
            {
                var message = eventPayload.ToObject <Message>();
                var c       = Channels[message.Channel_Id];

                message.Channel = c;

                if (string.IsNullOrEmpty(message.Webhook_Id))
                {
                    if (Users.ContainsKey(message.Author.Id))
                    {
                        message.Author = Users[message.Author.Id];
                    }
                }

                MessageCreate?.Invoke(c, message);
                break;
            }

            case Events.MESSAGE_UPDATE:
            {
                var message = eventPayload.ToObject <Message>();
                var c       = Channels[message.Channel_Id];

                MessageUpdate?.Invoke(c, message);
                break;
            }

            case Events.MESSAGE_DELETE:
            {
                var message = eventPayload.ToObject <Message>();
                var c       = Channels[message.Channel_Id];

                MessageDelete?.Invoke(c, message);
                break;
            }

            case Events.MESSAGE_DELETE_BULK:
            {
                var messages = eventPayload.ToObject <List <Message> >();
                var c        = Channels[eventPayload["channel_id"].ToString()];

                MessagesBulkDelete?.Invoke(c, messages);
                break;
            }

            case Events.PRESENCE_UPDATE:
            {
                var presense = eventPayload.ToObject <Guild.Presence>();
                var g        = Guilds[eventPayload["guild_id"].ToString()];

                if (g.Presences.ContainsKey(presense.User.Id))
                {
                    var p = g.Presences[presense.User.Id];

                    p.Game   = presense.Game;
                    p.Status = presense.Status;

                    presense = p;
                }
                else
                {
                    presense.User = Users[presense.User.Id];
                    g.Presences.Add(presense.User.Id, presense);
                }

                PresenceUpdate?.Invoke(g, presense);
                break;
            }
            }
        }
예제 #20
0
 protected internal override void RaiseMessageUpdate(IClientInfo client, string msg, string header, MessageType msgType, MessageState state)
 {
     MessageUpdate?.Invoke(client, msg, header, msgType, state);
 }
예제 #21
0
 protected virtual void OnMessageReceived(string message)
 {
     MessageUpdate?.Invoke(this, new MessageEventArgs(message));
 }