travian/src/Handler/Action/UpgradeBuildingAction.ts

23 lines
789 B
TypeScript

import { BaseAction } from './BaseAction';
import { GrabError, TryLaterError } from '../../Errors';
import { clickUpgradeButton } from '../../Page/BuildingPage/BuildingPage';
import { Args } from '../../Queue/Args';
import { Task } from '../../Queue/TaskProvider';
import { aroundMinutes } from '../../Helpers/Time';
import { registerAction } from '../ActionMap';
@registerAction
export class UpgradeBuildingAction extends BaseAction {
async run(args: Args, task: Task): Promise<any> {
try {
this.ensureSameVillage(args);
clickUpgradeButton();
} catch (e) {
if (e instanceof GrabError) {
throw new TryLaterError(aroundMinutes(5), 'No upgrade button, try later');
}
throw e;
}
}
}