// Insert into role_config table
foreach (var role in guild.Roles)
{
using var createRoleConfig = GetSqlCommandForGuildCreationSproc(connection, transaction);
createRoleConfig.Parameters.AddWithValue("@p_guild_id", guild.Id);
createRoleConfig.Parameters.AddWithValue("@p_role_id", role.Id);
createRoleConfig.Parameters.AddWithValue("@p_role_name", role.Name);
createRoleConfig.Parameters.AddWithValue("@p_permission_level",
role.Permissions.Administrator ? 100 :
role.Permissions.ManageGuild ? 90 :
role.Permissions.ManageRoles ? 80 :
role.Permissions.ManageChannels ? 70 :
role.Permissions.BanMembers ? 50 :
role.Permissions.KickMembers ? 25 :
role.Permissions.ManageMessages ? 10 : 0
);
createRoleConfig.Parameters.AddWithValue("@p_allow_commands",
role.Permissions.Administrator ||
role.Permissions.ManageGuild ||
role.Permissions.ManageRoles ||
role.Permissions.ManageChannels ||
role.Permissions.ManageMessages
);
await createRoleConfig.ExecuteNonQueryAsync();
}
// Insert into channel_config table
foreach (var channel in guild.Channels)
{
using var createChannelConfig = GetSqlCommandForGuildCreationSproc(connection, transaction);
createChannelConfig.Parameters.AddWithValue("@p_guild_id", guild.Id);
createChannelConfig.Parameters.AddWithValue("@p_channel_id", channel.Id);
createChannelConfig.Parameters.AddWithValue("@p_channel_name", channel.Name);
createChannelConfig.Parameters.AddWithValue("@p_allowed_members", JsonSerializer.Serialize(
guild.Users
.Where(user => user.GuildPermissions.Administrator && !user.IsBot)
.OrderByDescending(user => user.Username)
.Select(user => user.Id)
.ToList()
));
createChannelConfig.Parameters.AddWithValue("@p_allowed_roles", JsonSerializer.Serialize(
guild.Roles
.Where(role => role.Permissions.Administrator && !role.IsManaged)
.OrderByDescending(role => role.Name)
.Select(role => role.Id)
.ToList()
));
createChannelConfig.Parameters.AddWithValue("@p_allow_commands", false);
await createChannelConfig.ExecuteNonQueryAsync();
}