private async Task Client_JoinedGuild(IGuild arg) { ITextChannel defaultChannel = await arg.GetDefaultChannelAsync(); 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(users.ElementAt(i).GuildId.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); }