public async Task AddToQueue(ulong guildId, string subRedditName, PostType post, ulong channelId, int amountOfTimes) { await LazyAddToQueue.WaitAsync(); try { var txtChannel = _discord.GetChannel(channelId) as ITextChannel; if (txtChannel is null) { return; //Channel has been removed. } var subReddit = await GetSubReddit(subRedditName); if (subReddit is null) { await txtChannel.SendMessageAsync("The subreddit could not be found."); LazyAddToQueue.Release(); return; } if (subReddit.IsNsfw && !txtChannel.IsNsfw) { await txtChannel.SendMessageAsync("This subreddit can only be used in nsfw channels."); LazyAddToQueue.Release(); return; } var sort = await _guildSettingsAppService.GetGuildSettingByKey <Sort>(guildId, DefaultSettingKeys.Sort); IEnumerable <QueueItem> queueItems = new List <QueueItem>(); for (var i = 0; i < amountOfTimes; i++) { queueItems = queueItems.Append(new QueueItem(subReddit.Id, subReddit.Name, channelId, post, Guid.NewGuid(), sort)); } _queueManagerService.AddToQueue(queueItems, guildId); } catch (Exception e) { Console.WriteLine(e.Message); } finally { LazyAddToQueue.Release(); } }
public async Task <TObj> GetGuildSettingByKey <TObj>(ulong guildId, string key) { return(await _guildSettingsAppService.GetGuildSettingByKey <TObj>(guildId, key)); }