public async Task SetPinnedMessage(ulong messageId) { await _pinnedMessageRepository.Add(new PinnedMessage { MessageId = messageId }); await ReplyAsync($"Successfully set pinned message to [{messageId}]!"); }
public async Task AddChannel(SocketGuildChannel channel) { await _discordSettingsRepository.Add(new DiscordSettings { DiscordChannelId = channel.Id }); await ReplyAsync($"Successfully added announcement channel to [{channel.Name}]!"); }
public async Task Add(string twitchUsername, uint hexColor, [Remainder] string tagLine) { var streamers = _streamerRepository.GetCollection().AsQueryable(); if (streamers.FirstOrDefault(s => s.Username == twitchUsername) != null) { await ReplyAsync("A streamer with that username already exists!"); return; } await _streamerRepository.Add(new Streamer { Username = twitchUsername, TagLine = tagLine, HexColor = hexColor }); await ReplyAsync($"Successfully added {twitchUsername} to the Live Check List!"); }
public async Task UpdatePinnedMessage(List <Streamer> liveStreamers, List <Streamer> offlineStreamers) { var channel = GetChannel(_discordSettingsRepository.GetAll().FirstOrDefault()?.DiscordChannelId); if (channel == null) { return; } var pinnedMessageId = _pinnedMessageRepository.GetAll().FirstOrDefault()?.MessageId; if (pinnedMessageId == null) { var newPinnedMessage = await channel.SendMessageAsync(string.Empty, embed : EmbedHelper.PinnedMessageEmbedBuilder(liveStreamers, offlineStreamers)); var newPinnedMessageId = await _pinnedMessageRepository.Add(new PinnedMessage { MessageId = newPinnedMessage.Id }); pinnedMessageId = newPinnedMessageId.MessageId; _logger.LogDebug("Created new pinned message"); } if (!(await channel.GetMessageAsync(pinnedMessageId.Value) is RestUserMessage pinnedMessage)) { _logger.LogError("Could not find pinned message!"); return; } await pinnedMessage.ModifyAsync(msg => { msg.Content = string.Empty; msg.Embed = EmbedHelper.PinnedMessageEmbedBuilder(liveStreamers, offlineStreamers); }); }
public async Task <List <Streamer> > Announce(IEnumerable <Streamer> streamers) { var liveStreamers = new List <Streamer>(); foreach (var streamer in streamers) { try { var channel = GetChannel(_discordSettingsRepository.GetAll().FirstOrDefault()?.DiscordChannelId); var user = await _twitchApiHelper.GetUser(streamer.Username); if (user == null) { continue; } var stream = await _twitchApiHelper.GetStream(user); var announcementMessage = _announcementMessageRepository.GetAll() .FirstOrDefault(am => am.Streamer.Id == streamer.Id); if (announcementMessage != null) { if (stream == null || CheckStreamTitle(stream) || stream.GameId != TwitchConstants.GtaGameId) { await RemoveLiveMessage(channel, announcementMessage); } continue; } if (stream == null) { continue; } if (CheckStreamTitle(stream)) { continue; } var message = await channel.SendMessageAsync(string.Empty, embed : EmbedHelper.LiveMessageEmbedBuilder(streamer, user, stream)); await _announcementMessageRepository.Add(new AnnouncementMessages { MessageId = message.Id, Streamer = streamer }); _logger.LogInformation($"Successfully announced streamer [{streamer.Username}]"); } catch (Exception exception) { _logger.LogError(exception, $"Error occured while announcing streamer [{streamer.Username}]: {exception}"); } } return(liveStreamers); }