Ejemplo n.º 1
0
        public async Task New(CommandContext ctx, [Description("Уникальное имя корабля")][RemainingText] string name)
        {
            // check if user already has a ship
            if (PrivateShip.GetOwnedShip(ctx.Member.Id) != null)
            {
                await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} Ты уже являешься владельцем корабля.");

                return;
            }

            var requestTime = DateTime.Now;

            // check if the ship name is not set
            if (string.IsNullOrEmpty(name))
            {
                await ctx.RespondAsync(
                    $"{Bot.BotSettings.ErrorEmoji} Ты не указал имя корабля: `!p new название корабля`");

                return;
            }

            // check if there is a ship with the same name
            if (PrivateShip.Get(name) != null)
            {
                await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} Корабль с таким именем уже существует.");

                return;
            }

            // create a new ship
            var ship = PrivateShip.Create(name, requestTime, 0);

            ship.AddMember(ctx.Member.Id, PrivateShipMemberRole.Captain, false);

            // create a request message
            var requestsChannel = ctx.Guild.GetChannel(Bot.BotSettings.PrivateRequestsChannel);
            var requestText     = "**Запрос на создание корабля**\n\n" +
                                  $"**От:** {ctx.Member.Mention} ({ctx.Member.Id})\n" +
                                  $"**Название:** {name}\n" +
                                  $"**Время:** {DateTime.Now}\n\n" +
                                  $"Используйте :white_check_mark: для подтверждения или :no_entry: для отказа.";
            var message = await requestsChannel.SendMessageAsync(requestText);

            await message.CreateReactionAsync(DiscordEmoji.FromName(ctx.Client, ":white_check_mark:"));

            await message.CreateReactionAsync(DiscordEmoji.FromName(ctx.Client, ":no_entry:"));

            ship.RequestMessage = message.Id;

            // notify user
            await ctx.RespondAsync($"{Bot.BotSettings.OkEmoji} Запрос успешно отправлен");
        }