Exemple #1
0
        public void SendMessage(string exchangeName, IQueueObject queueObject)
        {
            if (string.IsNullOrWhiteSpace(queueObject?.Message))
            {
                throw new Exception("Ошибка отправки сообщения." + Environment.NewLine + "Нельзя отправить пустое текстовое сообщение.");
            }
            var body = Encoding.UTF8.GetBytes(queueObject.Message);

            if (body == null)
            {
                throw new Exception("Ошибка отправки сообщения." + Environment.NewLine + "Нельзя отправить пустое текстовое сообщение.");
            }

            using (var connection = NewConnect())
            {
                using (var model = connection.CreateModel())
                {
                    var basicProperties = model.CreateBasicProperties();
                    basicProperties.DeliveryMode = 2;
                    basicProperties.Headers      = queueObject.Headers;
                    basicProperties.AppId        = _rabbitMQSettings.AppId;
                    model.BasicPublish(exchangeName, queueObject.RoutingKey, basicProperties, body);
                }
            }
        }
Exemple #2
0
        public async Task Update(IQueueObject track, int volume, bool paused, bool looping, bool modify = true)
        {
            if (track == null)
            {
                return;
            }

            if (!modify)
            {
                this.Embed = this.BuildEmbed(track, volume, paused, looping);
                return;
            }

            if (this.Message == null)
            {
                return;
            }

            this.Embed = this.BuildEmbed(track, volume, paused, looping);
            if ((DateTime.Now - this.LastUpdate).TotalSeconds < 2)
            {
                this.LastUpdate = DateTime.Now;
                return;
            }

            this.LastUpdate = DateTime.Now;
            await this.Message.ModifyAsync(prop => prop.Embed = this.Embed);
        }
Exemple #3
0
        public async Task <IUserMessage> SendPlayerAsync(IEnergizePlayer ply, IQueueObject obj = null, IChannel chan = null)
        {
            obj = obj ?? ply.CurrentTrack;

            if (ply.TrackPlayer == null)
            {
                ply.TrackPlayer = new TrackPlayer(ply.VoiceChannel.GuildId);
                await ply.TrackPlayer.Update(obj, ply.Volume, ply.IsPaused, ply.IsLooping, false);
            }
            else
            {
                await ply.TrackPlayer.Update(obj, ply.Volume, ply.IsPaused, ply.IsLooping, false);

                await ply.TrackPlayer.DeleteMessage();
            }

            if (obj == null)
            {
                return(null);
            }

            bool isRadio = obj is RadioTrack;

            ply.TrackPlayer.Message = await this.MessageSender.SendAsync(chan ?? ply.TextChannel, ply.TrackPlayer.Embed);

            this.AddPlayerReactions(ply.TrackPlayer.Message, isRadio);
            return(ply.TrackPlayer.Message);
        }
        public BusShard(IAzureStorage resource, IQueueObject sender)
        {
            if (null == resource)
            {
                throw new ArgumentNullException("resource");
            }
            if (null == sender)
            {
                throw new ArgumentNullException("sender");
            }

            this.resource = resource;
            this.sender   = sender;
        }
Exemple #5
0
        private Embed BuildEmbed(IQueueObject obj, int volume, bool paused, bool looping)
        {
            switch (obj)
            {
            case ILavaTrack track:
                return(this.BuildTrackEmbed(track, volume, paused, looping));

            case RadioTrack radio:
                return(this.BuildRadioEmbed(radio, volume, paused));

            default:
                return(this.BuildUnknownEmbed(obj, volume, paused, looping));
            }
        }
Exemple #6
0
        private Embed BuildUnknownEmbed(IQueueObject obj, int volume, bool paused, bool looping)
        {
            EmbedBuilder builder = new EmbedBuilder();

            builder
            .WithColorType(EmbedColorType.Warning)
            .WithDescription("🎶 Playing unknown type of content")
            .WithField("ID", obj.Id)
            .WithField("Volume", $"{volume}%")
            .WithField("Paused", paused)
            .WithField("Looping", looping)
            .WithFooter("music player");

            return(builder.Build());
        }
Exemple #7
0
        private void SendMessage(YambrEmailSettings setting, IQueueObject queueObject)
        {
            if (string.IsNullOrWhiteSpace(queueObject?.Message))
            {
                throw new Exception(SR.T("Ошибка отправки сообщения.") + Environment.NewLine + SR.T("Нельзя отправить пустое текстовое сообщение."));
            }
            var body = Encoding.UTF8.GetBytes(queueObject.Message);

            if (setting == null)
            {
                throw new Exception(SR.T("Не переданы необходимые параметры."));
            }
            if (body == null)
            {
                throw new Exception(SR.T("Ошибка отправки сообщения.") + Environment.NewLine + SR.T("Нельзя отправить пустое текстовое сообщение."));
            }
            try
            {
                var connectionFactory = new ConnectionFactory
                {
                    HostName    = setting.HostName,
                    VirtualHost = setting.VirtualHost,
                    Protocol    = Protocols.AMQP_0_9_1,
                    Port        = setting.Port,
                    UserName    = setting.UserName,
                    Password    = setting.Password
                };
                var connectionFactory2 = connectionFactory;
                using (var connection = connectionFactory2.CreateConnection())
                {
                    using (var model = connection.CreateModel())
                    {
                        var basicProperties = model.CreateBasicProperties();
                        basicProperties.DeliveryMode = 2;
                        basicProperties.Headers      = queueObject.Headers;
                        basicProperties.AppId        = "ELMA";
                        model.BasicPublish(QueueConstants.ExchangeMailBox, queueObject.RoutingKey, basicProperties, body);
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message, ex);
                throw;
            }
        }
Exemple #8
0
 public void SendMessage(IQueueObject message)
 {
     try
     {
         var rMqSetting = Locator.GetServiceNotNull <YambrEmailSettingsModule>().Settings;
         if (rMqSetting == null)
         {
             return;
         }
         Logger.Debug(
             SR.T("Отправляется сообщение в очередь: {0}. Адрес подключения: {1}. Имя очереди: {2}.",
                  QueueConstants.ExchangeMailBox,
                  GetHost(rMqSetting),
                  QueueConstants.RoutingKeyMailBoxCmdDownload));
         SendMessage(rMqSetting, message);
     }
     catch (Exception ex)
     {
         throw new RabbitException("Ошибка при попытке отправить сообщение в очередь", ex);
     }
 }