Esempio n. 1
0
    public async Task Create([Remainder] string query = null !)
    {
        using var setTyping = Context.Channel.EnterTypingState();

        var discordOptions = _appOptions.CurrentValue.Discord;
        var guildOptions   = await _guildOptionsManager.GetGuildOptions(new GuildOptionsCriteria()
        {
            GuildId = Context.Guild.Id
        });

        var prefix       = guildOptions?.Prefix ?? discordOptions.Prefix;
        var signupEmotes = guildOptions?.SignupEmotes ?? discordOptions.SignupEmotes;

        if (query is null)
        {
            await ReplyAsync($"Try `{prefix}create event <Title> on <Day> at <Time>`, (without `<>`).");

            return;
        }

        var criteria = new CreateEventCriteria()
        {
            GuildId       = Context.Guild.Id,
            Query         = query,
            VoiceRegionId = Context.Guild.VoiceRegionId
        };

        var result = await _eventsManager.CreateEvent(criteria);

        if (result?.Event is null || !result.IsSuccessful)
        {
            await ReplyAsync($"I'm sorry, I could not create an event for you. Try `{prefix}create event <Title> on <Day> at <Time>`.");

            return;
        }

        var ev       = result.Event;
        var eventMsg = await ReplyAsync(message : null, isTTS : false, embed : ev.ToEmbed());

        var emotes = signupEmotes.Select(x => Emote.TryParse(x, out var em) ? (IEmote)em : new Emoji(x)).ToList();

        emotes.Add(new Emoji("🪑")); // Bench
        emotes.Add(new Emoji("🕑")); // Late
        emotes.Add(new Emoji("❌")); // Cancel

        _ = eventMsg.AddReactionsAsync(emotes.ToArray());

        ev.CreationDateTime = eventMsg.Timestamp;
        ev.Id = eventMsg.Id;

        var saveCriteria = new SaveEventCriteria()
        {
            Event = ev
        };

        _ = _eventsManager.SaveEvent(saveCriteria);
    }
Esempio n. 2
0
    /// <summary>
    /// Gets the custom prefix for the guild.
    /// </summary>
    /// <returns></returns>
    protected async Task <string> GetPrefix()
    {
        if (Context.Guild is object)
        {
            var criteria = new GuildOptionsCriteria()
            {
                GuildId = Context.Guild.Id
            };

            var options = await _guildOptionsManager.GetGuildOptions(criteria);

            if (!string.IsNullOrEmpty(options?.Prefix))
            {
                return(options.Prefix);
            }
        }

        return(_appOptions.CurrentValue.Discord.Prefix);
    }