コード例 #1
0
 public bool PostMessage(DirectMessageChannel channel, string message)
 {
     return(PostMessage(channel.Id, new MessageParameters
     {
         Message = message
     }));
 }
コード例 #2
0
        public ActionResult DirectMessage(string Receiver)
        {
            try
            {
                string          userId   = User.Identity.GetUserId();
                ApplicationUser receiver = db.Users.Where(u => u.UserName == Receiver).First();
                ApplicationUser sender   = db.Users.Where(u => u.Id == userId).First();

                ViewBag.UserName = sender.UserName;
                ViewBag.Receiver = receiver.UserName;
                DirectMessageChannel dmChannel = null;

                // API Connect
                TwilioClient.Init(TwilioApiKeys.accountSid, TwilioApiKeys.authToken);

                try
                {
                    dmChannel = db.DirectMessageChannels.Where(dm => dm.ReciverId.Id == receiver.Id && dm.SenderId.Id == sender.Id || dm.ReciverId.Id == sender.Id && dm.SenderId.Id == receiver.Id).First();
                    return(View(MessageResource.Read(TwilioApiKeys.serviceSid, dmChannel.ChannelId)));
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }


                if (dmChannel == null)
                {
                    // API Create channel
                    var channel = ChannelResource.Create(TwilioApiKeys.serviceSid, friendlyName: "DM Channel", uniqueName: $"{sender.UserName}-{receiver.UserName}", type: ChannelResource.ChannelTypeEnum.Private);

                    // Database DMChannel
                    dmChannel           = new DirectMessageChannel();
                    dmChannel.ChannelId = channel.Sid;
                    dmChannel.ReciverId = receiver;
                    dmChannel.SenderId  = sender;

                    // API Add members
                    MemberResource.Create(TwilioApiKeys.serviceSid, channel.Sid, dmChannel.ReciverId.UserName);
                    MemberResource.Create(TwilioApiKeys.serviceSid, channel.Sid, dmChannel.SenderId.UserName);

                    // Save DMChannel to Database
                    db.DirectMessageChannels.Add(dmChannel);
                    db.SaveChanges();

                    return(View(MessageResource.Read(TwilioApiKeys.serviceSid, channel.Sid)));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
            return(View("Index"));
        }
コード例 #3
0
ファイル: TestUser.cs プロジェクト: Senkobot/Senko.Framework
 public override int GetHashCode()
 {
     unchecked
     {
         var hashCode = Id.GetHashCode();
         hashCode = (hashCode * 397) ^ (AvatarId != null ? AvatarId.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ (Mention != null ? Mention.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ (Username != null ? Username.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ (Discriminator != null ? Discriminator.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ CreatedAt.GetHashCode();
         hashCode = (hashCode * 397) ^ IsBot.GetHashCode();
         hashCode = (hashCode * 397) ^ (Presence != null ? Presence.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ (DirectMessageChannel != null ? DirectMessageChannel.GetHashCode() : 0);
         return(hashCode);
     }
 }
コード例 #4
0
        public static MenuFlyout MakeGroupChannelMenu(DirectMessageChannel dm)
        {
            MenuFlyout menu = new MenuFlyout();

            menu.MenuFlyoutPresenterStyle = (Style)App.Current.Resources["MenuFlyoutPresenterStyle1"];

            // Add users
            int x = 0;

            foreach (User user in LocalState.DMs[dm.Id].Users)
            {
                // Create SubItem for user
                MenuFlyoutSubItem item = new MenuFlyoutSubItem()
                {
                    Text = user.Username
                };

                // Add "Profile" button to subitem
                MenuFlyoutItem profile = new MenuFlyoutItem()
                {
                    Text = App.GetString("/Flyouts/Profile"),
                    Icon = new SymbolIcon(Symbol.ContactInfo),
                    Tag  = user
                };
                profile.Click += FlyoutManager.OpenProfile;
                item.Items.Add(profile);


                // Add Seperator
                MenuFlyoutSeparator sep1 = new MenuFlyoutSeparator();
                item.Items.Add(sep1);

                // If current user owns the dm
                if (dm.OwnerId == LocalState.CurrentUser.Id)
                {
                    // Add "Remove from DM" button
                    MenuFlyoutItem removeFromDm = new MenuFlyoutItem()
                    {
                        Text       = App.GetString("/Flyouts/RemoveFromGroup"),
                        Icon       = new SymbolIcon(Symbol.LeaveChat),
                        Foreground = new SolidColorBrush(Color.FromArgb(255, 240, 71, 71)),
                        Tag        = new Tuple <string, string>(dm.Id, user.Id)
                    };
                    removeFromDm.Click += FlyoutManager.RemoveGroupUser;
                    item.Items.Add(removeFromDm);

                    // Add Seperator
                    MenuFlyoutSeparator sep2 = new MenuFlyoutSeparator();
                    item.Items.Add(sep2);
                }

                // Create "Add Friend" button
                MenuFlyoutItem addFriend = new MenuFlyoutItem()
                {
                    Text = App.GetString("/Flyouts/AddFriend"),
                    Icon = new SymbolIcon(Symbol.AddFriend),
                    Tag  = dm.Users.ToList()[x].Id
                };
                addFriend.Click += FlyoutManager.AddFriend;

                // Create "Accept Friend Request" button
                MenuFlyoutItem acceptFriendRequest = new MenuFlyoutItem()
                {
                    Text = App.GetString("/Flyouts/AcceptFriendRequest"),
                    Icon = new SymbolIcon(Symbol.AddFriend),
                    Tag  = dm.Users.ToList()[x].Id
                };
                acceptFriendRequest.Click += FlyoutManager.AddFriend;

                // Create "Remove Friend" button
                MenuFlyoutItem removeFriend = new MenuFlyoutItem()
                {
                    Text       = App.GetString("/Flyouts/RemoveFriend"),
                    Icon       = new SymbolIcon(Symbol.ContactPresence),
                    Foreground = new SolidColorBrush(Color.FromArgb(255, 240, 71, 71)),
                    Tag        = dm.Users.ToList()[x].Id
                };
                removeFriend.Click += FlyoutManager.RemoveFriend;

                // Create "Block" button
                MenuFlyoutItem block = new MenuFlyoutItem()
                {
                    Text       = App.GetString("/Flyouts/Block"),
                    Icon       = new SymbolIcon(Symbol.BlockContact),
                    Foreground = new SolidColorBrush(Color.FromArgb(255, 240, 71, 71)),
                    Tag        = dm.Users.ToList()[x].Id
                };
                block.Click += FlyoutManager.BlockUser;

                // Create "Unblock" button
                MenuFlyoutItem unBlock = new MenuFlyoutItem()
                {
                    Text = App.GetString("/Flyouts/Unblock"),
                    Icon = new SymbolIcon(Symbol.ContactPresence),
                    Tag  = dm.Users.ToList()[x].Id
                };
                unBlock.Click += FlyoutManager.RemoveFriend;

                // Choose buttons to add
                if (LocalState.Friends.ContainsKey(dm.Users.FirstOrDefault().Id))
                {
                    switch (LocalState.Friends[dm.Users.FirstOrDefault().Id].Type)
                    {
                    // No relation
                    case 0:
                        // Add "Add Friend" and "Block" buttons
                        item.Items.Add(addFriend);
                        item.Items.Add(block);
                        break;

                    // Friends
                    case 1:
                        // Add "Remove Friend" and "Block" buttons
                        item.Items.Add(removeFriend);
                        item.Items.Add(block);
                        break;

                    // Blocked
                    case 2:
                        // Add "Unblock" button
                        item.Items.Add(unBlock);
                        break;

                    // Incoming Friend Request
                    case 3:
                        // Add "Accept Friend Request" and "Block" buttons
                        item.Items.Add(acceptFriendRequest);
                        item.Items.Add(block);
                        break;

                    // Outgoing Friend Request
                    case 4:
                        // Add "Block" button
                        menu.Items.Add(block);
                        break;
                    }
                }
                else
                {
                    // Default to no relation
                    item.Items.Add(addFriend);
                    item.Items.Add(block);
                }

                // Add subitems
                menu.Items.Add(item);
                x++;
            }


            // Add seperator
            MenuFlyoutSeparator sep3 = new MenuFlyoutSeparator();

            menu.Items.Add(sep3);

            // Add "Leave DM" button
            MenuFlyoutItem leaveDm = new MenuFlyoutItem()
            {
                Text       = App.GetString("/Flyouts/LeaveGroup"),
                Icon       = new SymbolIcon(Symbol.LeaveChat),
                Foreground = new SolidColorBrush(Color.FromArgb(255, 240, 71, 71)),
                Tag        = new Tuple <string, string>(dm.Id, LocalState.CurrentUser.Id)
            };

            if (dm.OwnerId == LocalState.CurrentUser.Id)
            {
                leaveDm.Click += FlyoutManager.RemoveGroupUser;
            }
            else
            {
                leaveDm.Click += FlyoutManager.LeaveUnownedChannel;
            }
            menu.Items.Add(leaveDm);

            return(menu);
        }
コード例 #5
0
        /// <summary>
        /// Make SimpleChannel from DMChannel
        /// </summary>
        /// <param name="channel">DMChannel</param>
        /// <returns>SimpleChannel</returns>
        public static SimpleChannel MakeChannel(DirectMessageChannel channel)
        {
            // Create basic SimpleChannel
            SimpleChannel sc = new SimpleChannel();

            sc.Id   = channel.Id;
            sc.Type = channel.Type;

            switch (channel.Type)
            {
            // DM
            case 1:
                // Assign basic DM info
                sc.Name          = "@" + channel.Users.FirstOrDefault().Username;
                sc.LastMessageId = channel.LastMessageId;
                sc.ImageURL      = "https://cdn.discordapp.com/avatars/" + channel.Users.FirstOrDefault().Id + "/" + channel.Users.FirstOrDefault().Avatar + ".png?size=64";

                // Add members
                sc.Members = new Dictionary <string, User>();
                foreach (User user in channel.Users)
                {
                    sc.Members.Add(user.Id, user);
                }

                // Determine presence
                if (LocalState.PresenceDict.ContainsKey(channel.Users.FirstOrDefault().Id))
                {
                    sc.UserStatus = LocalState.PresenceDict[channel.Users.FirstOrDefault().Id];
                    sc.Playing    = LocalState.PresenceDict[channel.Users.FirstOrDefault().Id].Game;
                    if (LocalState.PresenceDict[channel.Users.FirstOrDefault().Id].Game != null)
                    {
                        sc.Playing = new Game()
                        {
                            Name = LocalState.PresenceDict[channel.Users.FirstOrDefault().Id].Game
                                   .Name,
                            Type = LocalState.PresenceDict[channel.Users.FirstOrDefault().Id].Game.Type,
                            Url  = LocalState.PresenceDict[channel.Users.FirstOrDefault().Id].Game.Url
                        };
                    }
                }
                else
                {
                    sc.UserStatus = new Presence()
                    {
                        Status = "offline"
                    };
                }

                //sc.IsMuted = LocalState.GuildSettings.ContainsKey(channel.raw.GuildId) ? (LocalState.GuildSettings[channel.raw.GuildId].channelOverrides.ContainsKey(channel.raw.Id) ? LocalState.GuildSettings[channel.raw.GuildId].channelOverrides[channel.raw.Id].Muted : false) : false;
                if (LocalState.RPC.ContainsKey(sc.Id))
                {
                    ReadState readstate = LocalState.RPC[sc.Id];
                    sc.NotificationCount = readstate.MentionCount;
                    var StorageChannel = LocalState.DMs[sc.Id];
                    if (StorageChannel.LastMessageId != null &&
                        readstate.LastMessageId != StorageChannel.LastMessageId)
                    {
                        sc.IsUnread = true;
                    }
                    else
                    {
                        sc.IsUnread = false;
                    }
                }
                return(sc);

            // Group DM
            case 3:
                // Assign basic Group DM info
                sc.Name          = channel.Name;
                sc.LastMessageId = channel.LastMessageId;
                sc.Subtitle      = App.GetString("/Main/members").Replace("<count>", (channel.Users.Count() + 1).ToString());
                sc.Icon          = channel.Icon;

                // Override null name
                if (!string.IsNullOrEmpty(channel.Name))
                {
                    sc.Name = channel.Name;
                }
                else
                {
                    List <string> channelMembers = new List <string>();
                    foreach (var d in channel.Users)
                    {
                        channelMembers.Add(d.Username);
                    }
                    sc.Name = string.Join(", ", channelMembers);
                }

                // Determine Unread and Notification status
                if (LocalState.RPC.ContainsKey(sc.Id))
                {
                    ReadState readstate = LocalState.RPC[sc.Id];
                    sc.NotificationCount = readstate.MentionCount;
                    var StorageChannel = LocalState.DMs[sc.Id];
                    if (StorageChannel.LastMessageId != null &&
                        readstate.LastMessageId != StorageChannel.LastMessageId)
                    {
                        sc.IsUnread = true;
                    }
                    else
                    {
                        sc.IsUnread = false;
                    }
                }

                // Show SimpleChannel
                sc.HavePermissions = true;
                return(sc);
            }
            return(null);
        }
コード例 #6
0
 public void AddUpdate(DirectMessageChannel channel)
 {
     ims[channel.id] = channel;
 }
コード例 #7
0
ファイル: DMChnFlyout.cs プロジェクト: rafal06/Quarrel
        /// <summary>
        /// Make Flyout for DMChannel
        /// </summary>
        /// <param name="dm">DM Channel</param>
        /// <returns>A MenuFlyout for the DM</returns>
        public static MenuFlyout MakeDMChannelMenu(DirectMessageChannel dm)
        {
            MenuFlyout menu = new MenuFlyout();

            menu.MenuFlyoutPresenterStyle = (Style)App.Current.Resources["MenuFlyoutPresenterStyle1"];

            // Add "Profile" button
            MenuFlyoutItem profile = new MenuFlyoutItem()
            {
                Text = App.GetString("/Flyouts/Profile"),
                Icon = new SymbolIcon(Symbol.ContactInfo),
                Tag  = dm.Users.FirstOrDefault()
            };

            profile.Click += FlyoutManager.OpenProfile;
            menu.Items.Add(profile);


            // Add seperator
            MenuFlyoutSeparator sep1 = new MenuFlyoutSeparator();

            menu.Items.Add(sep1);


            // Create "Remove Friend" button
            MenuFlyoutItem removeFriend = new MenuFlyoutItem()
            {
                Text       = App.GetString("/Flyouts/RemoveFriend"),
                Icon       = new SymbolIcon(Symbol.ContactPresence),
                Foreground = new SolidColorBrush(Color.FromArgb(255, 240, 71, 71)),
                Tag        = dm.Users.FirstOrDefault().Id
            };

            removeFriend.Click += FlyoutManager.RemoveFriend;

            // Create "Add Friend" button
            MenuFlyoutItem addFriend = new MenuFlyoutItem()
            {
                Text = App.GetString("/Flyouts/AddFriend"),
                Icon = new SymbolIcon(Symbol.AddFriend),
                Tag  = dm.Users.FirstOrDefault().Id
            };

            addFriend.Click += FlyoutManager.AddFriend;

            // Create "Accept Friend Request" button
            MenuFlyoutItem acceptFriendRequest = new MenuFlyoutItem()
            {
                Text = App.GetString("/Flyouts/AcceptFriendRequest"),
                Icon = new SymbolIcon(Symbol.AddFriend),
                Tag  = dm.Users.FirstOrDefault().Id
            };

            acceptFriendRequest.Click += FlyoutManager.AddFriend;

            // Create "Block" button
            MenuFlyoutItem block = new MenuFlyoutItem()
            {
                Text       = App.GetString("/Flyouts/Block"),
                Icon       = new SymbolIcon(Symbol.BlockContact),
                Foreground = new SolidColorBrush(Color.FromArgb(255, 240, 71, 71)),
                Tag        = dm.Users.FirstOrDefault().Id
            };

            block.Click += FlyoutManager.BlockUser;

            // Create "Unblock" button
            MenuFlyoutItem unBlock = new MenuFlyoutItem()
            {
                Text = App.GetString("/Flyouts/Unblock"),
                Tag  = dm.Users.FirstOrDefault().Id,
                Icon = new SymbolIcon(Symbol.ContactPresence)
            };

            unBlock.Click += FlyoutManager.RemoveFriend;

            // Choose buttons to add
            if (LocalState.Friends.ContainsKey(dm.Users.FirstOrDefault().Id))
            {
                switch (LocalState.Friends[dm.Users.FirstOrDefault().Id].Type)
                {
                // No relation
                case 0:
                    // Add "Add Friend" and "Block" buttons
                    menu.Items.Add(addFriend);
                    menu.Items.Add(block);
                    break;

                // Friend
                case 1:
                    // Add "Remove Friend" and "Block" buttons
                    menu.Items.Add(removeFriend);
                    menu.Items.Add(block);
                    break;

                // Blocked
                case 2:
                    // Add "Unblock" button
                    menu.Items.Add(unBlock);
                    break;

                // Incoming Friend Request
                case 3:
                    // Add "Accept Friend Request" and "Block" buttons
                    menu.Items.Add(acceptFriendRequest);
                    menu.Items.Add(block);
                    break;

                // Outgoing Friend Request
                case 4:
                    // Add "Block" button
                    menu.Items.Add(block);
                    break;
                }
            }
            else
            {
                // Default to no relation
                menu.Items.Add(addFriend);
                menu.Items.Add(block);
            }


            // Add Seperator
            MenuFlyoutSeparator sep2 = new MenuFlyoutSeparator();

            menu.Items.Add(sep2);

            // Add "Close DM" button
            MenuFlyoutItem CloseDM = new MenuFlyoutItem()
            {
                Text       = App.GetString("/Flyouts/CloseDM"),
                Icon       = new SymbolIcon(Symbol.LeaveChat),
                Foreground = new SolidColorBrush(Color.FromArgb(255, 240, 71, 71)),
                Tag        = dm.Id,
            };

            CloseDM.Click += FlyoutManager.DeleteChannel;
            menu.Items.Add(CloseDM);

            return(menu);
        }
コード例 #8
0
 public bool PostMessage(DirectMessageChannel channel, MessageParameters messageParameters)
 {
     return(PostMessage(channel.Id, messageParameters));
 }
コード例 #9
0
 public GatewayDirectMessageChannelCreatedMessage(DirectMessageChannel channel)
 {
     Channel = channel;
 }