示例#1
0
 public StatusCommand(IArkContext context, IConfig config, IConstants constants, ArkContextManager contextManager)
 {
     _context        = context;
     _config         = config;
     _constants      = constants;
     _contextManager = contextManager;
 }
示例#2
0
 public PlayerListCommand(EfDatabaseContextFactory databaseContextFactory, IArkContext context, IConfig config, ArkContextManager contextManager)
 {
     _databaseContextFactory = databaseContextFactory;
     _context        = context;
     _config         = config;
     _contextManager = contextManager;
 }
示例#3
0
 public VoteCommand(IArkContext context, IConfig config, EfDatabaseContextFactory databaseContextFactory, ISavedState savedstate, ArkContextManager contextManager)
 {
     _context = context;
     _config  = config;
     _databaseContextFactory = databaseContextFactory;
     _savedstate             = savedstate;
     _contextManager         = contextManager;
 }
示例#4
0
 public AdminCheckCommand(ILifetimeScope scope, IArkContext context, IConfig config,
                          MyKibblesCommand mykibbles, MyResourcesCommand myresources) //commands that provide functionality that admins can access for any user
 {
     _context     = context;
     _config      = config;
     _mykibbles   = mykibbles;
     _myresources = myresources;
 }
示例#5
0
        public ArkServerService(IConstants constants, IConfig config, IArkContext context, ArkContextManager contextManager)
        {
            _signaller = new Signaller <Tuple <ArkServerContext, bool, SavegameBackupResult> >();

            _constants      = constants;
            _config         = config;
            _context        = context;
            _contextManager = contextManager;

            contextManager.BackupCompleted += ContextManager_BackupCompleted;
        }
示例#6
0
 public CheckFoodCommand(
     IConfig config,
     IArkContext context,
     IConstants constants,
     EfDatabaseContextFactory databaseContextFactory,
     ArkContextManager contextManager)
 {
     _config    = config;
     _context   = context;
     _constants = constants;
     _databaseContextFactory = databaseContextFactory;
     _contextManager         = contextManager;
 }
示例#7
0
 public AdminCommand(
     ILifetimeScope scope,
     IArkContext context,
     IConfig config,
     IConstants constants,
     EfDatabaseContextFactory databaseContextFactory,
     ISavedState savedstate,
     IArkServerService arkServerService,
     ISavegameBackupService savegameBackupService,
     ArkContextManager contextManager,
     ScheduledTasksManager scheduledTasksManager)
 {
     _context   = context;
     _config    = config;
     _constants = constants;
     _databaseContextFactory = databaseContextFactory;
     _savedstate             = savedstate;
     _arkServerService       = arkServerService;
     _savegameBackupService  = savegameBackupService;
     _contextManager         = contextManager;
     _scheduledTasksManager  = scheduledTasksManager;
 }
示例#8
0
 public MyKibblesCommand(IArkContext context, IConstants constants, EfDatabaseContextFactory databaseContextFactory)
 {
     _context   = context;
     _constants = constants;
     _databaseContextFactory = databaseContextFactory;
 }
示例#9
0
 public StatsCommand(IArkContext context)
 {
     _context = context;
 }
示例#10
0
        //todo: this method does not really belong here and should be moved elsewhere
        public static async Task <Data.Player> GetCurrentPlayerOrSendErrorMessage(CommandEventArgs e, EfDatabaseContextFactory databaseContextFactory, IArkContext _context)
        {
            using (var db = databaseContextFactory.Create())
            {
                var user = db.Users.FirstOrDefault(x => x.DiscordId == (long)e.User.Id && !x.Unlinked);
                if (user == null)
                {
                    await e.Channel.SendMessage($"<@{e.User.Id}>, this command can only be used after you link your Discord user with your Steam account using **!linksteam**.");

                    return(null);
                }

                var player = _context.Players.FirstOrDefault(x => x.SteamId != null && x.SteamId.Equals(user.SteamId.ToString()));
                if (player == null)
                {
                    await e.Channel.SendMessage($"<@{e.User.Id}>, we have no record of you playing in the last month.");

                    return(null);
                }

                return(player);
            }
        }
示例#11
0
 public FindTameCommand(IConfig config, IArkContext context)
 {
     _context = context;
     _config  = config;
 }
示例#12
0
 public MyDinoHistoryCommand(IArkContext context, EfDatabaseContextFactory databaseContextFactory)
 {
     _context = context;
     _databaseContextFactory = databaseContextFactory;
 }
示例#13
0
        public ArkDiscordBot(
            DiscordClient discord,
            IConfig config,
            IArkContext context,
            IConstants constants,
            IBarebonesSteamOpenId openId,
            EfDatabaseContextFactory databaseContextFactory,
            IEnumerable <ICommand> commands,
            ILifetimeScope scope,
            ArkContextManager contextManager,
            VotingManager votingManager)
        {
            _discord   = discord;
            _config    = config;
            _context   = context;
            _constants = constants;
            _databaseContextFactory = databaseContextFactory;
            _openId = openId;
            _openId.SteamOpenIdCallback += _openId_SteamOpenIdCallback;
            _scope          = scope;
            _contextManager = contextManager;
            _votingManager  = votingManager;

            _context.Updated += _context_Updated;

            _discord.UsingCommands(x =>
            {
                x.PrefixChar         = '!';
                x.AllowMentionPrefix = true;
            });

            _discord.ServerAvailable += _discord_ServerAvailable;

            var cservice = _discord.GetService <CommandService>();

            cservice.CommandExecuted += Commands_CommandExecuted;
            cservice.CommandErrored  += Commands_CommandErrored;
            foreach (var command in commands)
            {
                //if (command.DebugOnly && !_config.Debug) continue;

                var cbuilder = cservice.CreateCommand(command.Name);
                if (command.Aliases != null && command.Aliases.Length > 0)
                {
                    cbuilder.Alias(command.Aliases);
                }
                var rrc = command as IRoleRestrictedCommand;
                if (rrc != null && rrc.ForRoles?.Length > 0)
                {
                    cbuilder.AddCheck((a, b, c) =>
                                      c.Client.Servers.Any(x =>
                                                           x.Roles.Any(y => y != null && rrc.ForRoles.Contains(y.Name, StringComparer.OrdinalIgnoreCase) == true && y.Members.Any(z => z.Id == b.Id))), null);
                }

                cbuilder.AddCheck((a, b, c) =>
                {
                    return(c.IsPrivate || !(_config.EnabledChannels?.Length > 0) || (c?.Name != null && _config.EnabledChannels.Contains(c.Name, StringComparer.OrdinalIgnoreCase)));
                });

                command.Init(_discord);
                command.Register(cbuilder);
                cbuilder.Do(command.Run);
            }



            var args = Environment.GetCommandLineArgs();

            if (args != null && args.Contains("/restart", StringComparer.OrdinalIgnoreCase))
            {
                _wasRestarted = true;
            }
        }