Ejemplo n.º 1
0
        public PrefixInstance RegisterPrefixInstance(string prefix, bool canBeChanged = true, bool forceExecuteCommands = false)
        {
            PrefixInstance newPrefix = new PrefixInstance(prefix.ToLower(), canBeChanged, forceExecuteCommands);

            CommandHandler.Prefixes.Add(prefix, newPrefix);
            return(newPrefix);
        }
Ejemplo n.º 2
0
 public void RegisterAsDefault()
 {
     if (Default == null)
     {
         Default = this;
     }
     else
     {
         Log.WarningAt("SetDefaultPrefix", "Default prefix is already defined!");
     }
 }
Ejemplo n.º 3
0
        public async Task <string> GetIdentifierAsync(ulong guildId, PrefixInstance prefix)
        {
            using (var context = new IAContext())
            {
                Identifier i = await context.Identifiers.FindAsync(guildId);

                if (i == null)
                {
                    i = context.Identifiers.Add(new Identifier()
                    {
                        GuildId = guildId.ToDbLong(), Value = prefix.DefaultValue
                    });
                    await context.SaveChangesAsync();
                }
                return(i.Value);
            }
        }
Ejemplo n.º 4
0
        public async Task <bool> TryRunCommandAsync(IDiscordMessage msg, PrefixInstance prefix)
        {
            string identifier = await prefix.GetForGuildAsync(msg.Guild.Id);

            string message = msg.Content.ToLower();

            if (msg.Content.StartsWith(identifier))
            {
                message = Regex.Replace(message, @"\r\n?|\n", "");

                string command = message
                                 .Substring(identifier.Length)
                                 .Split(' ')
                                 .First();

                command = (aliases.ContainsKey(command)) ? aliases[command] : command;

                ICommandEvent eventInstance = GetCommandEvent(command);

                if (eventInstance == null)
                {
                    return(false);
                }

                if (GetUserAccessibility(msg) >= eventInstance.Accessibility)
                {
                    if (await eventInstance.IsEnabled(msg.Channel.Id) || prefix.ForceCommandExecution && GetUserAccessibility(msg) >= EventAccessibility.DEVELOPERONLY)
                    {
                        await eventInstance.Check(msg, this, identifier);

                        return(true);
                    }
                }
                else
                {
                    await eventSystem.OnCommandDone(msg, eventInstance, false);
                }
            }
            return(false);
        }