public BettingDialog(BotMessages messages)
 {
     Messages   = messages;
     _processor = new BetProcessor {
         Messages = Messages
     };
 }
예제 #2
0
        public async Task MessageReceivedAsync(SocketMessage message)
        {
            try
            {
                if (!ValidateSocketMessage(message))
                {
                    return;
                }

                _logger.LogInformation("Message" + message.Content + "\nReceived from " + message.Author + "\nIn channel " + message.Channel);
                var command    = GetCommandFromSocketMessage(message);
                var parammeter = GetParammeterFromSocketMessage(message);

                _logger.LogInformation("Executing command...");
                string result = await _commandService.GetCommandResponseAsync(command, parammeter);

                _logger.LogInformation("Sending message to server with command result\n" + result);
                await message.Channel.SendMessageAsync(result);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message);
                await message.Channel.SendMessageAsync(BotMessages.ErrorMessage());
            }
        }
예제 #3
0
 public StartCommand(
     IUserService userService,
     IOptions <BotMessages> commandMessages
     )
 {
     _userService     = userService;
     _commandMessages = commandMessages.Value;
 }
예제 #4
0
        public async Task ReadyAsync()
        {
            _logger.LogInformation($"{_client.CurrentUser.ToString()} is connected!");
            var readyChannelId = ulong.Parse(_configuration["Server:Channels:Ready"]);
            var message        = BotMessages.BotReadyMessage(_client.CurrentUser.ToString());

            await SendMessageToChannel(readyChannelId, message);
        }
예제 #5
0
 public SubscriptionController(
     IBotService botService,
     IUserService userService,
     IOptions <BotMessages> botMessages)
 {
     _botService  = botService;
     _userService = userService;
     _botMessages = botMessages.Value;
 }
예제 #6
0
        public async Task JoinedUser(SocketGuildUser user)
        {
            _logger.LogInformation($"{user.Mention} joined into server!");

            var message          = BotMessages.WelcomeMessage(user.Mention);
            var welcomeChannelId = ulong.Parse(_configuration["Server:Channels:Welcome"]);

            await SendMessageToChannel(welcomeChannelId, message);
        }
예제 #7
0
        public async Task DeleteSession()
        {
            await sessionService.DeleteSession(socketMessage);

            await roomService.ClearRoom(socketMessage);

            await SessionMessages.SendResponseWithListOfCommands(socketMessage);

            await BotMessages.SendResponseWithInfoAboutOffline(socketMessage);
        }
예제 #8
0
        private async Task MessageReceived(SocketMessage socketMessage)
        {
            var message = socketMessage.Content;

            if (!message.StartsWith("/"))
            {
                return;
            }

            if (message.StartsWith("/admin"))
            {
                await BotMessages.SendResponseWithLoading(socketMessage);

                await controllersRouter.Admins(socketMessage);

                return;
            }

            if (!socketMessage.Channel.Name.Contains("bot-talk"))
            {
                return;
            }

            if ((message.StartsWith("/bot") || message.StartsWith("/b"))
                /*&& socketMessage.Channel.Name.Contains("test") == IsDebugMode*/)
            {
                await controllersRouter.Conversations(socketMessage);

                return;
            }


            if (message.StartsWith("/session"))
            {
                await BotMessages.SendResponseWithLoading(socketMessage);

                await controllersRouter.Sessions(socketMessage);

                return;
            }

            if (message.StartsWith("/room"))
            {
                await BotMessages.SendResponseWithLoading(socketMessage);

                await controllersRouter.Rooms(socketMessage);

                await BotMessages.SendResponseWithInfoAboutOffline(socketMessage);

                return;
            }

            await ErrorMessages.SendNotFoundCommand(socketMessage);
        }
예제 #9
0
        public async Task <string> GetCommandResponseAsync(string command, string parammeter)
        {
            command.RemoveAccents();

            return(command switch
            {
                "cotacao" or
                "cotaçao"
                => await _mediator.SendRequestAsync(new GetQuotationRequest { Parammeter = parammeter }),

                (_) => BotMessages.ErrorMessage()
            });
예제 #10
0
        public async Task ClearRoom()
        {
            if (SessionService.GetThisRoomChatSession(socketMessage) != null)
            {
                await RoomMessages.CannotClearRoomBcsActiveSession(socketMessage);

                return;
            }
            await roomService.ClearRoom(socketMessage);

            await SessionMessages.SendResponseWithListOfCommands(socketMessage);

            await BotMessages.SendResponseWithInfoAboutOffline(socketMessage);
        }
예제 #11
0
        public async Task <string> Handle(GetQuotationRequest request, CancellationToken cancellationToken)
        {
            if (string.IsNullOrEmpty(request.Parammeter))
            {
                return(BotMessages.QuotationInvalidMessage());
            }

            string currency  = request.Parammeter;
            var    quotation = await GetQuotationByCurrencyAsync(currency);

            return(BotMessages.QuotationResultMessage(
                       currency,
                       Convert.ToDouble(quotation.High, new CultureInfo("en-US")),
                       _apiUrl,
                       DateTime.Now));
        }
예제 #12
0
        public async Task StartSession()
        {
            if (SessionHelper.IsSessionInThisRoom(socketMessage, sessionService.ChatSessions))
            {
                await SessionMessages.CannotCreateSessionBecauseOtherUser(socketMessage);

                return;
            }
            await roomService.ClearRoom(socketMessage);

            await sessionService.CreateNewSession(socketMessage);

            await SessionMessages.SendResponseWithListOfCommands(socketMessage);

            await BotMessages.SendResponseWithInfoAboutOffline(socketMessage);
        }
예제 #13
0
        /// <summary>
        /// Сохранение текстовых сообщений в коллекцию
        /// </summary>
        /// <param name="msg"></param>
        private void MessageLogger(Message msg)
        {
            string text = $"{DateTime.Now.ToLongTimeString()}: {msg.Chat.FirstName} {msg.Chat.Id} {msg.Text}";

            Debug.WriteLine($"{text} TypeMessage: {msg.Type.ToString()}");

            if (msg.Text == null)
            {
                return;
            }

            var messageText = msg.Text;

            w.Dispatcher.Invoke(() =>
            {
                BotMessages.Add(
                    new BotMessage(
                        DateTime.Now.ToLongTimeString(), messageText, msg.Chat.FirstName, msg.Chat.Id, msg.MessageId));
            });
        }
예제 #14
0
        public async Task StartAsync()
        {
            try
            {
                _logger.LogInformation("Login into discord server...");
                await _client.LoginAsync(TokenType.Bot, _configuration["Bot:Token"]);

                _logger.LogInformation("Login successful!");
                _logger.LogInformation("Starting discord servers connection.");

                await _client.StartAsync();

                await _client.SetStatusAsync(UserStatus.Online);

                await _client.SetGameAsync(BotMessages.BotActivityMessage(), BotMessages.BotTwitchUrlMessage(), ActivityType.Watching);

                await Task.Delay(-1);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message);
            }
        }