Esempio n. 1
0
        public async Task CreateEventAsync([Remainder] string paramString)
        {
            if (IsAdmin())
            {
                var name                  = paramString.ParseArgs("名称");
                var hostServer            = paramString.ParseArgs("服务器");
                var notificationChannelId = paramString.ParseArgs("频道");

                if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(hostServer))
                {
                    await ReplyAsync(embed : "用法: `创建赛事 -名称 \"赛事名\" -服务器 \"[服务器地址]:[端口号]\"`\n想要找到可用的服务器使用 `列出服务器` 指令\n你也可以提前加上设置项。比如在命令里添加`-对选手隐藏得分`".ErrorEmbed());
                }
                else
                {
                    var server = ServerService.GetServer();
                    if (server == null)
                    {
                        await ReplyAsync(embed : "服务器不在线,所以不能创建比赛".ErrorEmbed());
                    }
                    else
                    {
                        var host = server.State.KnownHosts.FirstOrDefault(x => $"{x.Address}:{x.Port}" == hostServer);

                        QualifierEvent.EventSettings settings = QualifierEvent.EventSettings.None;

                        //Parse any desired options
                        foreach (QualifierEvent.EventSettings o in Enum.GetValues(typeof(QualifierEvent.EventSettings)))
                        {
                            if (paramString.ParseArgs(o.ToString()) == "true")
                            {
                                settings = (settings | o);
                            }
                        }

                        var response = await server.SendCreateQualifierEvent(host, DatabaseService.DatabaseContext.ConvertDatabaseToModel(null, new Database.Event
                        {
                            EventId       = Guid.NewGuid().ToString(),
                            GuildId       = Context.Guild.Id,
                            GuildName     = Context.Guild.Name,
                            Name          = name,
                            InfoChannelId = ulong.Parse(notificationChannelId ?? "0"),
                            Flags         = (int)settings
                        }));

                        if (response.Type == Response.ResponseType.Success)
                        {
                            await ReplyAsync(embed : response.Message.SuccessEmbed());
                        }
                        else if (response.Type == Response.ResponseType.Fail)
                        {
                            await ReplyAsync(embed : response.Message.ErrorEmbed());
                        }
                    }
                }
            }
            else
            {
                await ReplyAsync(embed : "你没有足够的权限使用该命令".ErrorEmbed());
            }
        }
        public async Task CreateEventAsync([Remainder] string paramString)
        {
            if (IsAdmin())
            {
                var name                  = paramString.ParseArgs("name");
                var hostServer            = paramString.ParseArgs("host");
                var notificationChannelId = paramString.ParseArgs("infoChannelId");

                if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(hostServer))
                {
                    await ReplyAsync(embed : "Usage: `createEvent -name \"Event Name\" -host \"[host address]:[port]\"`\nTo find available hosts, please run `listHosts`\nYou can also set your desired event settings here. For example, add `-hidescorefromplayers` to the command!".ErrorEmbed());
                }
                else
                {
                    var server = ServerService.GetServer();
                    if (server == null)
                    {
                        await ReplyAsync(embed : "The Server is not running, so we can't can't add events to it".ErrorEmbed());
                    }
                    else
                    {
                        var host = server.State.KnownHosts.FirstOrDefault(x => $"{x.Address}:{x.Port}" == hostServer);

                        QualifierEvent.EventSettings settings = QualifierEvent.EventSettings.None;

                        //Parse any desired options
                        foreach (QualifierEvent.EventSettings o in Enum.GetValues(typeof(QualifierEvent.EventSettings)))
                        {
                            if (paramString.ParseArgs(o.ToString()) == "true")
                            {
                                settings = (settings | o);
                            }
                        }

                        var response = await server.SendCreateQualifierEvent(host, DatabaseService.DatabaseContext.ConvertDatabaseToModel(null, new Database.Event
                        {
                            EventId       = Guid.NewGuid().ToString(),
                            GuildId       = Context.Guild.Id,
                            GuildName     = Context.Guild.Name,
                            Name          = name,
                            InfoChannelId = ulong.Parse(notificationChannelId),
                            Flags         = (int)settings
                        }));

                        if (response.Type == Response.ResponseType.Success)
                        {
                            await ReplyAsync(embed : response.Message.SuccessEmbed());
                        }
                        else if (response.Type == Response.ResponseType.Fail)
                        {
                            await ReplyAsync(embed : response.Message.ErrorEmbed());
                        }
                    }
                }
            }
            else
            {
                await ReplyAsync(embed : "You do not have sufficient permissions to use this command".ErrorEmbed());
            }
        }