csharp/0x0ade/CelesteNet/CelesteNet.Server.ChatModule/CMDs/ChatCMDHelp.cs

ChatCMDHelp.cs
using Mono.Cecil;
using Mono.Cecil.Cil;
using MonoMod.Utils;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Celeste.Mod.CelesteNet.Server.Chat {
    public clast ChatCMDHelp : ChatCMD {

        public override string Args => "[page] | [command]";

        public override string Info => "Get help on how to use commands.";

        public override int HelpOrder => int.MinValue;

        public override void Run(ChatCMDEnv env, List args) {
            if (args.Count == 1) {
                if (args[0].Type == ChatCMDArgType.Int) {
                    env.Send(GetCommandPage(env, args[0].Int - 1));
                    return;
                }

                env.Send(GetCommandSnippet(env, args[0].String));
                return;
            }

            env.Send(GetCommandPage(env, 0));
        }

        public string GetCommandPage(ChatCMDEnv env, int page = 0) {
            const int pageSize = 8;

            string prefix = Chat.Settings.CommandPrefix;
            StringBuilder builder = new();

            int pages = (int) Math.Ceiling(Chat.Commands.All.Count / (float) pageSize);
            if (page < 0 || pages