Esempio n. 1
0
        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}");
                }
            }
        }
Esempio n. 2
0
        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();
        }