Example #1
0
        public static async Task SaveFile(string file)
        {
            consoleOut($"Saving {file}...");
            string json = "";

            switch (file)
            {
            case "config":
                json = JsonConvert.SerializeObject(config, Formatting.Indented);
                break;

            case "servers":
                json = JsonConvert.SerializeObject(_main.ServerList, Formatting.Indented);
                break;
            }
            try
            {
                File.WriteAllText($"{resDir}/{file}.json", json);
            }
            catch (Exception ex)
            {
                BotFrame.consoleOut(ex.Message);
                return;
            }
            consoleOut($"Saved {file}!");
        }
Example #2
0
        private async Task UserJoinedHandler(SocketGuildUser u)
        {
            if (u == null)
            {
                return;
            }
            var server = _main.ServerList.FirstOrDefault(x => x.ServerId == u.Guild.Id);

            if (u.IsBot)
            {
                return;
            }
            if (server.NewUserRole != 0)
            {
                try
                {
                    await u.AddRoleAsync(u.Guild.Roles.FirstOrDefault(x => x.Id == server.NewUserRole));
                }
                catch (Exception ex)
                {
                    BotFrame.consoleOut(ex.Message);
                    return;
                }
            }
        }
Example #3
0
        private async Task MessageReceivedHandler(SocketMessage msg)
        {
            SocketUserMessage message = msg as SocketUserMessage;

            if (message == null)
            {
                return;
            }
            SocketCommandContext context = new SocketCommandContext(_client, message);

            if (context.User.IsBot)
            {
                return;
            }
            var  server       = _main.ServerList.FirstOrDefault(x => x.ServerId == context.Guild.Id);
            bool admin        = false;
            var  hasAdminRole = context.Guild.Users.FirstOrDefault(x => x.Id == context.User.Id).Roles.FirstOrDefault(y => y.Id == server.AdminRole);

            if (hasAdminRole != null && hasAdminRole.Id == server.AdminRole)
            {
                admin = true;
            }
            int argPos = 0;

            if (message.HasStringPrefix(((Char)server.Prefix).ToString(), ref argPos) ||
                message.HasMentionPrefix(_client.CurrentUser, ref argPos))
            {
                if ((server.BotChannel != 0 && msg.Channel.Id == server.BotChannel) || server.BotChannel == 0 || admin)
                {
                    var res = await _service.ExecuteAsync(context, argPos, null);

                    if (!res.IsSuccess && res.Error != CommandError.UnknownCommand)
                    {
                        BotFrame.consoleOut($"Command Handler Error: {res.ErrorReason}");
                        return;
                    }
                    if (!res.IsSuccess && res.Error == CommandError.UnknownCommand)
                    {
                        await Task.Delay(200);

                        await message.DeleteAsync();

                        BotFrame.consoleOut($"Unknown command! Deleted message from user {context.User} in channel {context.Channel.Name}{Environment.NewLine}Message: {message.Content}");
                        return;
                    }
                }
                else
                {
                    BotFrame.consoleOut($"Delete message from user {context.User} in channel {context.Channel.Name}{Environment.NewLine}Message: {context.Message.Content}");
                    return;
                }
            }
        }
Example #4
0
        private async Task ReactionAddedHandler(Discord.Cacheable <Discord.IUserMessage, ulong> userMessage, ISocketMessageChannel messageChannel, SocketReaction reaction)
        {
            SocketGuildChannel guildChannel = messageChannel as SocketGuildChannel;
            SocketGuildUser    user         = guildChannel.Guild.Users.FirstOrDefault(x => x.Id == reaction.UserId);
            DiscordServer      server       = _main.ServerList.FirstOrDefault(x => x.ServerId == guildChannel.Guild.Id);

            if (server == null || user == null)
            {
                return;
            }
            //Reaction Locks
            foreach (var reactionLock in server.ReactionLockList.Where(x => x.ChannelId == guildChannel.Id && x.MessageId == userMessage.Id))
            {
                if (reactionLock.Emote == reaction.Emote.ToString())
                {
                    var giveRole = guildChannel.Guild.Roles.FirstOrDefault(x => x.Id == reactionLock.GiveRole);
                    var takeRole = guildChannel.Guild.Roles.FirstOrDefault(x => x.Id == reactionLock.TakeRole);
                    if (giveRole == null)
                    {
                        return;
                    }
                    if (!user.Roles.Contains(giveRole))
                    {
                        BotFrame.consoleOut($"Adding role @{giveRole} to user {user} in server {guildChannel.Guild.Name}");
                        await user.AddRoleAsync(giveRole);

                        if (takeRole != null)
                        {
                            BotFrame.consoleOut($"Removing role @{takeRole} from user {user} in server {guildChannel.Guild.Name}");
                            await user.RemoveRoleAsync(takeRole);
                        }
                    }
                }
            }
            //--------------
        }
Example #5
0
 public async Task Log(LogMessage msg)
 {
     BotFrame.consoleOut(msg.Message);
 }