protected override async Task Send(Raid raid) { if (raid == null || !Raids.Contains(raid)) { return; } var link = $"<a href =\"https://raidikalu.herokuapp.com/#raidi-{raid.Id}\">{raid.Name}</a>"; var message = raid.ComposeMessage(link); bool useDelay = false; if (raid.Messages.Any()) { try { useDelay = raid.Messages.Count > 25; foreach (var raidMessage in raid.Messages) { var editResult = await Bot.EditMessageTextAsync(raidMessage.ChatId, raidMessage.MessageId, message, ParseMode.Html, true); if (useDelay) { Task.Delay(200).Wait(); } } } catch (Exception e) { Console.WriteLine($"Error modifying message: {e.Message}"); } } else { try { var sendChannels = Channels.Where(ch => ch.Gyms.Contains(raid.Name)).ToList(); useDelay = sendChannels.Count() > 25; foreach (var serviceChannel in sendChannels) { raid.Messages.Add(new TGMessage(await Bot.SendTextMessageAsync(serviceChannel.Id, message, ParseMode.Html, true, DateTime.Now.Hour < 9 || DateTime.Now.Hour > 22))); if (useDelay) { Task.Delay(200).Wait(); } } } catch (Exception e) { Console.WriteLine($"Error writing message: {e.Message}"); } } }
protected async override Task Send(Raid raid) { if (raid == null || !Raids.Contains(raid)) { return; } var link = $"{raid.Name}"; // (https://raidikalu.herokuapp.com/#raidi-{raid.Id})"; var message = raid.ComposeMessage(link); var url = $"https://raidikalu.herokuapp.com/#raidi-{raid.Id}"; var embed = new EmbedBuilder { Title = "Raidikalu", Url = url }; bool useDelay = false; if (raid.Messages.Any()) { try { useDelay = raid.Messages.Count > 25; foreach (var raidMessage in raid.Messages) { var discordMessage = raidMessage.Content as Discord.Rest.RestUserMessage; if (discordMessage != null) { await discordMessage.ModifyAsync(m => { m.Content = message; m.Embed = embed.Build(); }); } } } catch (Exception e) { Console.WriteLine($"Error modifying message: {e.Message}"); } } else { try { var sendChannels = Channels.Where(ch => ch.Gyms.Contains(raid.Name)).ToList(); useDelay = sendChannels.Count() > 25; foreach (var serviceChannel in sendChannels) { var channel = client.GetChannel((ulong)serviceChannel.Id); if (channel == null) { var splitName = serviceChannel.Name.Split('#'); if (splitName.Length != 2) { continue; } var user = client.GetUser(splitName[0].Substring(1), splitName[1]); if (user != null) { var dmchannel = user.GetOrCreateDMChannelAsync().Result; raid.Messages.Add(new DiscordMessage(await dmchannel.SendMessageAsync(message, false, embed.Build()))); } } else if (channel is SocketTextChannel textChannel) { raid.Messages.Add(new DiscordMessage(await textChannel.SendMessageAsync(message, false, embed.Build()))); } if (useDelay) { Task.Delay(200).Wait(); } } } catch (Exception e) { Console.WriteLine($"Error writing message: {e.Message}"); } } //throw new NotImplementedException(); }