public async Task <Result <Unit> > WriteLogToGuild(IGuild guild, Embed embed)
        {
            var res = await _config.GetGuildConfig(guild.Id);

            if (res.IsFailure())
            {
                return(new Unit());
            }
            var config = res.Get();

            if (await guild.GetChannelAsync(config.LogChannel) is not ITextChannel channel)
            {
                return(new Unit());
            }
            await channel.SendMessageAsync(embed : embed);

            return(new Unit());
        }
Ejemplo n.º 2
0
        private async Task <Result <GuildConfigModel> > CheckStaffAndRetrieveModel()
        {
            var userRes = await _client.GetGuildUser(Context.Guild.Id, Context.User.Id);

            if (userRes.IsFailure())
            {
                return(new KeyNotFoundException());
            }
            var user   = userRes.Get();
            var result = await _repo.GetGuildConfig(Context.Guild.Id);

            var model = result.GetModelOrDefault(Context.Guild);

            if (!user.IsStaff(model.StaffRoles))
            {
                return(new UnauthorizedAccessException());
            }
            return(model);
        }