Esempio n. 1
0
        public bool AddAdmin(IUser user)
        {
            bool result;

            lock (_lock) {
                result = _admins.Add(new User(user.Id, user.Username, user.Discriminator));
            }
            string friendlyName = DiscordUtil.GetUniqueName(user);

            Message = result ? $"Added admin user {friendlyName}" : $"User {friendlyName} is already an admin.";
            return(result);
        }
Esempio n. 2
0
        public bool RemoveAdmin(IUser user)
        {
            if (_admins.Count <= 1)
            {
                Message = $"Cannot remove last admin from list.";
                return(false);
            }

            User u = new User(user.Id, user.Username, user.Discriminator);

            bool result;

            lock (_lock) {
                result = _admins.Remove(u);
            }

            string friendlyName = DiscordUtil.GetUniqueName(user);

            Message = result ? $"Removed admin user {friendlyName}." : $"User {friendlyName} is not an admin.";
            return(result);
        }
Esempio n. 3
0
        private Task MessageReceived(SocketMessage msg)
        {
            if (msg.Content.StartsWith(_MSG_PREFIX))
            {
                lock (_lock) {
                    String content = msg.Content;
                    int    plen    = _MSG_PREFIX.Length;
                    content = content.Substring(plen, content.Length - plen);
                    _msgQueue.Enqueue(new DiscordMessage(msg.Author.Id, content));
                }
                string user    = msg.Author.Username;
                string discrim = msg.Author.Discriminator;
                Console.WriteLine($"--> SERVER: Queued Discord message (from {user}#{discrim})");
            }
            else if (msg.Content.StartsWith(_ADMIN_PREFIX))
            {
                string friendlyName = DiscordUtil.GetUniqueName(msg.Author);
                if (!_adminList.IsAdmin(msg.Author))
                {
                    Console.WriteLine($"--> SERVER: Requested admin command but was rejected ({friendlyName})");
                    return(Task.CompletedTask);
                }

                String content = msg.Content;
                int    plen    = _ADMIN_PREFIX.Length;
                content = content.Substring(plen, content.Length - plen);
                string[] tokens = content.Split(" ");
                if (tokens.Length > 1)
                {
                    if (tokens[0] == "list" && tokens[1] == "admins")
                    {
                        string adminStr = String.Join(", ", _adminList.GetAdmins());
                        Console.WriteLine($"--> SERVER: Requested admins ({friendlyName})");
                        Console.WriteLine($"--> SERVER: {adminStr}");
                        msg.Channel.SendMessageAsync($"Current users with admin permissions are: {adminStr}");
                    }
                    else if (tokens[0] == "add" && tokens[1] == "admin")
                    {
                        var user = msg.MentionedUsers.FirstOrDefault();
                        if (user == null)
                        {
                            Console.WriteLine("--> SERVER: Unknown user.");
                            return(Task.CompletedTask);
                        }
                        bool success = _adminList.AddAdmin(user);
                        Console.WriteLine($"--> SERVER: Giving admin to {friendlyName}");
                        Console.WriteLine($"--> SERVER: {_adminList.Message}");
                        if (success)
                        {
                            msg.Channel.SendMessageAsync($"I've added {friendlyName} as an admin.");
                        }
                        else
                        {
                            msg.Channel.SendMessageAsync($"I couldn't add that user as an admin: {_adminList.Message}");
                        }
                    }
                    else if (tokens[0] == "remove" && tokens[1] == "admin")
                    {
                        var user = msg.MentionedUsers.FirstOrDefault();
                        if (user == null)
                        {
                            Console.WriteLine("--> SERVER: Unknown user.");
                            return(Task.CompletedTask);
                        }
                        bool success = _adminList.RemoveAdmin(user);
                        Console.WriteLine($"--> SERVER: Revoking admin from {friendlyName}");
                        Console.WriteLine($"--> SERVER: {_adminList.Message}");
                        if (success)
                        {
                            msg.Channel.SendMessageAsync($"I've removed {friendlyName} as an admin.");
                        }
                        else
                        {
                            msg.Channel.SendMessageAsync($"I couldn't remove that user as an admin: {_adminList.Message}");
                        }
                    }
                }
                else
                {
                    Console.WriteLine("--> SERVER: Unknown admin command received.");
                }
            }

            return(Task.CompletedTask);
        }