Exemplo n.º 1
0
        private async Task Client_GuildUpdated(IDiscordGuild arg1, IDiscordGuild arg2)
        {
            if (arg1.Name != arg2.Name)
            {
                using (var scope = MikiApp.Instance.Services.CreateScope())
                {
                    var       context = scope.ServiceProvider.GetService <MikiDbContext>();
                    GuildUser g       = await context.GuildUsers.FindAsync(arg1.Id.ToDbLong());

                    g.Name = arg2.Name;
                    await context.SaveChangesAsync();
                }
            }
        }
Exemplo n.º 2
0
        public static async Task <IDiscordGuildUser> FindUserByMentionAsync(IDiscordGuild guild, string id)
        {
            if (!Mention.TryParse(id, out var mention))
            {
                throw new InvalidEntityException("user");
            }

            if (mention.Type == MentionType.USER ||
                mention.Type == MentionType.USER_NICKNAME)
            {
                return(await guild.GetMemberAsync(mention.Id));
            }
            throw new InvalidEntityException("user");
        }
Exemplo n.º 3
0
        private async Task Client_JoinedGuild(IDiscordGuild arg)
        {
            IDiscordChannel defaultChannel = await arg.GetDefaultChannelAsync();

            if (defaultChannel != null)
            {
                using (var context = new MikiContext())
                {
                    LocaleInstance i = await Locale.GetLanguageInstanceAsync(context, defaultChannel.Id);

                    (defaultChannel as IDiscordTextChannel).QueueMessage(i.GetString("miki_join_message"));
                }
            }

            //List<string> allArgs = new List<string>();
            //List<object> allParams = new List<object>();
            //List<object> allExpParams = new List<object>();

            //try
            //{
            //	for (int i = 0; i < arg.Members.Count; i++)
            //	{
            //		allArgs.Add($"(@p{i * 2}, @p{i * 2 + 1})");

            //		allParams.Add(arg.Members.ElementAt(i).Id.ToDbLong());
            //		allParams.Add(arg.Members.ElementAt(i).Username);

            //		allExpParams.Add(arg.Id.ToDbLong());
            //		allExpParams.Add(arg.Members.ElementAt(i).Id.ToDbLong());
            //	}

            //	using (var context = new MikiContext())
            //	{
            //		await context.Database.ExecuteSqlCommandAsync(
            //			$"INSERT INTO dbo.\"Users\" (\"Id\", \"Name\") VALUES {string.Join(",", allArgs)} ON CONFLICT DO NOTHING", allParams);

            //		await context.Database.ExecuteSqlCommandAsync(
            //			$"INSERT INTO dbo.\"LocalExperience\" (\"ServerId\", \"UserId\") VALUES {string.Join(",", allArgs)} ON CONFLICT DO NOTHING", allExpParams);

            //		await context.SaveChangesAsync();
            //	}
            //}
            //catch (Exception e)
            //{
            //	Log.Error(e.ToString());
            //}

            DogStatsd.Increment("guilds.joined");
        }
Exemplo n.º 4
0
        public async Task <GuildPermission> GetPermissionsAsync(IDiscordGuildUser user)
        {
            IDiscordGuild guild = await GetGuildAsync();

            GuildPermission permissions = await guild.GetPermissionsAsync(user);

            if (permissions.HasFlag(GuildPermission.Administrator))
            {
                return(GuildPermission.All);
            }

            PermissionOverwrite overwriteEveryone = _packet.PermissionOverwrites
                                                    .FirstOrDefault(x => x.Id == GuildId);

            if (overwriteEveryone != null)
            {
                permissions &= ~overwriteEveryone.DeniedPermissions;
                permissions |= overwriteEveryone.AllowedPermissions;
            }

            PermissionOverwrite overwrites = new PermissionOverwrite();

            if (user.RoleIds != null)
            {
                foreach (ulong roleId in user.RoleIds)
                {
                    PermissionOverwrite roleOverwrites = _packet.PermissionOverwrites.FirstOrDefault(x => x.Id == roleId);

                    if (roleOverwrites != null)
                    {
                        overwrites.AllowedPermissions |= roleOverwrites.AllowedPermissions;
                        overwrites.DeniedPermissions  &= roleOverwrites.DeniedPermissions;
                    }
                }
            }

            permissions &= ~overwrites.DeniedPermissions;
            permissions |= overwrites.AllowedPermissions;

            PermissionOverwrite userOverwrite = _packet.PermissionOverwrites.FirstOrDefault(x => x.Id == user.Id);

            if (userOverwrite != null)
            {
                permissions &= ~userOverwrite.DeniedPermissions;
                permissions |= userOverwrite.AllowedPermissions;
            }

            return(permissions);
        }
Exemplo n.º 5
0
        private async Task Client_JoinedGuild(IDiscordGuild arg)
        {
            using (var scope = MikiApp.Instance.Services.CreateScope())
            {
                var context = scope.ServiceProvider.GetService <DbContext>();

                IDiscordChannel defaultChannel = await arg.GetDefaultChannelAsync();

                if (defaultChannel != null)
                {
                    LocaleInstance i = await Locale.GetLanguageInstanceAsync(context, defaultChannel.Id);

                    (defaultChannel as IDiscordTextChannel).QueueMessage(i.GetString("miki_join_message"));
                }

                List <string> allArgs      = new List <string>();
                List <object> allParams    = new List <object>();
                List <object> allExpParams = new List <object>();

                try
                {
                    var members = await arg.GetMembersAsync();

                    for (int i = 0; i < members.Length; i++)
                    {
                        allArgs.Add($"(@p{i * 2}, @p{i * 2 + 1})");

                        allParams.Add(members.ElementAt(i).Id.ToDbLong());
                        allParams.Add(members.ElementAt(i).Username);

                        allExpParams.Add(arg.Id.ToDbLong());
                        allExpParams.Add(members.ElementAt(i).Id.ToDbLong());
                    }

                    await context.Database.ExecuteSqlCommandAsync(
                        $"INSERT INTO dbo.\"Users\" (\"Id\", \"Name\") VALUES {string.Join(",", allArgs)} ON CONFLICT DO NOTHING", allParams);

                    await context.Database.ExecuteSqlCommandAsync(
                        $"INSERT INTO dbo.\"LocalExperience\" (\"ServerId\", \"UserId\") VALUES {string.Join(",", allArgs)} ON CONFLICT DO NOTHING", allExpParams);

                    await context.SaveChangesAsync();
                }
                catch (Exception e)
                {
                    Log.Error(e.ToString());
                }
            }
        }
Exemplo n.º 6
0
 public async Task <IDiscordUser> GetUserAsync(IDiscordGuild guild)
 {
     if (IsMention)
     {
         return(await guild.GetUserAsync(ulong.Parse(Argument
                                                     .TrimStart('<')
                                                     .TrimStart('@')
                                                     .TrimStart('!')
                                                     .TrimEnd('>'))));
     }
     else if (ulong.TryParse(Argument, out ulong id))
     {
         return(await guild.GetUserAsync(id));
     }
     return(await guild.GetUserAsync(Argument));
 }
Exemplo n.º 7
0
        public static async Task Create(IDiscordGuild g)
        {
            using (var context = new MikiContext())
            {
                context.GuildUsers.Add(
                    new GuildUser()
                {
                    Id         = g.Id.ToDbLong(),
                    Name       = g.Name,
                    Experience = 0,
                    RivalId    = 0,
                    UserCount  = g.UserCount
                });

                await context.SaveChangesAsync();
            }
        }
Exemplo n.º 8
0
        private async Task SendDiscordPW(Bot bot, IDiscordGuild g)
        {
            var shard  = bot.GetShardFor(g);
            var client = new RestClient("https://bots.discord.pw/api/bots/160105994217586689/stats");

            var guildCount = new GuildCountObject()
            {
                ShardId    = shard.ShardId,
                ShardCount = bot.Information.ShardCount,
                GuildCount = shard.Guilds.Count
            };

            string json = JsonConvert.SerializeObject(guildCount);

            await client
            .SetAuthorization(Global.Config.DiscordPwKey)
            .PostAsync <string>("", json);
        }
Exemplo n.º 9
0
        public async Task ReasonAsync(IDiscordGuild guild, MessageContext context, int id, [Remaining] string reason)
        {
            var warning = await _warningRepository.GetAsync(id);

            if (warning == null)
            {
                context.Response.AddError(_localizer["Moderation.Warn.NotFound"].WithToken("id", id));
                return;
            }

            var user = await guild.GetMemberAsync(warning.UserId);

            warning.Reason = reason;

            await _warningRepository.UpdateAsync(warning);

            await _consoleService.UpdateWarningMessageAsync(context, warning, user, context.User);
        }
Exemplo n.º 10
0
        private async Task Client_JoinedGuild(IDiscordGuild arg)
        {
            //IDiscordChannel defaultChannel = await arg.GetDefaultChannelAsync();

            //if (defaultChannel != null)
            //{
            //	defaultChannel.QueueMessageAsync(Locale.GetString(defaultChannel.Id, "miki_join_message"));
            //}

            List <string> allArgs      = new List <string>();
            List <object> allParams    = new List <object>();
            List <object> allExpParams = new List <object>();

            //try
            //{
            //	var users = await arg.GetUsersAsync();
            //	for (int i = 0; i < users.Count; i++)
            //	{
            //		allArgs.Add($"(@p{i * 2}, @p{i * 2 + 1})");

            //		allParams.Add(users.ElementAt(i).Id.ToDbLong());
            //		allParams.Add(users.ElementAt(i).Username);

            //		allExpParams.Add((await users.ElementAt(i).GetGuildAsync()).Id.ToDbLong());
            //		allExpParams.Add(users.ElementAt(i).Id.ToDbLong());
            //	}

            //	using (var context = new MikiContext())
            //	{
            //		await context.Database.ExecuteSqlCommandAsync(
            //			$"INSERT INTO dbo.\"Users\" (\"Id\", \"Name\") VALUES {string.Join(",", allArgs)} ON CONFLICT DO NOTHING", allParams);
            //		await context.Database.ExecuteSqlCommandAsync(
            //			$"INSERT INTO dbo.\"LocalExperience\" (\"ServerId\", \"UserId\") VALUES {string.Join(",", allArgs)} ON CONFLICT DO NOTHING", allExpParams);
            //		await context.SaveChangesAsync();
            //	}
            //}
            //catch(Exception e)
            //{
            //	Log.Error(e.ToString());
            //}

            DogStatsd.Increment("guilds.joined");
            //	DogStatsd.Set("guilds", Bot.Instance.Client.Guilds.Count, Bot.Instance.Client.Guilds.Count);
        }
Exemplo n.º 11
0
        public static async Task Create(IDiscordGuild g)
        {
            using (var context = new MikiContext())
            {
                context.GuildUsers.Add(
                    new GuildUser()
                {
                    Id         = g.Id.ToDbLong(),
                    Name       = g.Name,
                    Experience = 0,
                    RivalId    = 0,
                    UserCount  = g.UserCount,
                    MinimalExperienceToGetRewards = 100,
                    VisibleOnLeaderboards         = true
                });

                await context.SaveChangesAsync();
            }
        }
Exemplo n.º 12
0
        public static async Task <GuildUser> CreateAsync(MikiContext context, IDiscordGuild guild)
        {
            long id        = guild.Id.ToDbLong();
            int  userCount = (await guild.GetUsersAsync()).Count;
            int  value     = await context.LocalExperience
                             .Where(x => x.ServerId == id)
                             .SumAsync(x => x.Experience);

            var guildUser = new GuildUser();

            guildUser.Name             = guild.Name;
            guildUser.Id               = id;
            guildUser.Experience       = value;
            guildUser.UserCount        = userCount;
            guildUser.LastRivalRenewed = Utils.MinDbValue;
            guildUser.MinimalExperienceToGetRewards = 100;
            GuildUser outputGuildUser = context.GuildUsers.Add(guildUser).Entity;
            await context.SaveChangesAsync();

            return(outputGuildUser);
        }
Exemplo n.º 13
0
        public async Task <string> Print(int currentValue, IDiscordGuild g, IDiscordGuildChannel c)
        {
            string output = "";

            IDiscordGuildUser u = await g.GetSelfAsync();

            if (!(await c.GetPermissionsAsync(u)).HasFlag(GuildPermission.UseExternalEmojis))
            {
                return("");
            }

            int iteration        = MaxValue / Width;
            int currentIteration = iteration;

            for (int i = 0; i < Width; i++)
            {
                output           += (currentValue >= currentIteration) ? ValueOn.GetAppropriateSection(0, Width - 1, i) : ValueOff.GetAppropriateSection(0, Width - 1, i);
                currentIteration += iteration;
            }

            return(output);
        }
Exemplo n.º 14
0
 public ulong GetBotId(IDiscordGuild guild) => throw new NotImplementedException();
Exemplo n.º 15
0
 public virtual Task SetIdentifierAsync(IDiscordGuild guild, string defaultPrefix, string newPrefix) => throw new NotImplementedException();
Exemplo n.º 16
0
        public async Task SetConsoleChannelAsync(IDiscordGuild guild, MessageContext context)
        {
            await _consoleService.SetChannelId(guild.Id, context.Request.ChannelId);

            context.Response.AddSuccess(_localizer["Moderation.Console.ChannelChanged"]);
        }
Exemplo n.º 17
0
 private async Task InternalLeftGuild(IDiscordGuild g)
 {
     await OnGuildLeave(g);
 }
Exemplo n.º 18
0
 private async Task InternalJoinedGuild(IDiscordGuild g)
 {
     await OnGuildJoin(g);
 }
Exemplo n.º 19
0
 public GuildUpdateEvent(IDiscordGuild guild)
 {
     Guild = guild;
 }
Exemplo n.º 20
0
 public Task Unban(IDiscordGuild guild)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 21
0
 public virtual Task Ban(IDiscordGuild guild, int amount = 0, string reason = "")
 {
     throw new NotImplementedException();
 }
Exemplo n.º 22
0
 public static async Task <IDiscordRole> GetRoleAsync(this LevelRole role, IDiscordGuild guild)
 {
     return(await guild.GetRoleAsync((ulong)role.RoleId));
 }
Exemplo n.º 23
0
 public ValueTask OnGuildUpdate(IDiscordGuild guild)
 {
     return(_eventManager.CallAsync(new GuildUpdateEvent(guild)));
 }
Exemplo n.º 24
0
 public async Task <List <IDiscordRole> > GetRolesByName(IDiscordGuild guild, string roleName)
 => (await guild.GetRolesAsync()).Where(x => x.Name.ToLower() == roleName.ToLower()).ToList();
Exemplo n.º 25
0
 public PermissionModule(IPermissionManager permissionManager, IStringLocalizer localizer, IModuleManager moduleManager, IDiscordGuild guild)
 {
     _permissionManager = permissionManager;
     _localizer         = localizer;
     _moduleManager     = moduleManager;
     _guild             = guild;
 }
Exemplo n.º 26
0
 public GuildAvailableEvent(IDiscordGuild guild)
 {
     Guild = guild;
 }
Exemplo n.º 27
0
 public ValueTask OnGuildJoin(IDiscordGuild guild)
 {
     return(_eventManager.CallAsync(new GuildAvailableEvent(guild)));
 }
Exemplo n.º 28
0
 public Task SetEnabledAll(IDiscordGuild guild, bool value)
 {
     throw new AddonRunException();
 }
Exemplo n.º 29
0
 private async Task Client_UserJoined(IDiscordGuild arg)
 {
     await UpdateGuildUserCountAsync(arg);
 }
Exemplo n.º 30
0
        public async Task <List <Tuple <string, IDiscordMessageChannel> > > GetMessage(IDiscordGuild guild, EventMessageType type, IDiscordUser user)
        {
            long guildId = guild.Id.ToDbLong();
            List <IDiscordMessageChannel> channels = await guild.GetChannels();

            List <Tuple <string, IDiscordMessageChannel> > output = new List <Tuple <string, IDiscordMessageChannel> >();

            using (var context = new MikiContext())
            {
                foreach (IDiscordMessageChannel c in channels)
                {
                    EventMessage messageObject = await context.EventMessages.FindAsync(c.Id.ToDbLong(), (int)type);

                    if (messageObject == null)
                    {
                        continue;
                    }

                    if (string.IsNullOrEmpty(messageObject.Message))
                    {
                        continue;
                    }

                    string modifiedMessage       = messageObject.Message;
                    List <IDiscordUser> allUsers = await c.GetUsersAsync();

                    modifiedMessage = modifiedMessage.Replace("-um", user.Mention);
                    modifiedMessage = modifiedMessage.Replace("-uc", user.Guild.UserCount.ToString());
                    modifiedMessage = modifiedMessage.Replace("-u", string.IsNullOrEmpty(user.Nickname) ? user.Username : user.Nickname);

                    modifiedMessage = modifiedMessage.Replace("-ru", allUsers[MikiRandom.Next(0, allUsers.Count)].Nickname);

                    modifiedMessage = modifiedMessage.Replace("-now", DateTime.Now.ToShortDateString());
                    modifiedMessage = modifiedMessage.Replace("-s", user.Guild.Name);

                    modifiedMessage = modifiedMessage.Replace("-om", user.Guild.Owner.Mention);
                    modifiedMessage = modifiedMessage.Replace("-o", string.IsNullOrEmpty(user.Guild.Owner.Nickname) ? user.Guild.Owner.Username : user.Guild.Owner.Nickname);

                    modifiedMessage = modifiedMessage.Replace("-cc", user.Guild.ChannelCount.ToString());
                    modifiedMessage = modifiedMessage.Replace("-vc", user.Guild.VoiceChannelCount.ToString());

                    output.Add(new Tuple <string, IDiscordMessageChannel>(modifiedMessage, c));
                }
                return(output);
            }
        }