runAsync method
Implementation
@override
Future<void> runAsync(String label, List<String> args) async {
if (args.isEmpty || (!banned && args.length != 1)) {
server.log('Wrong usage, use ${getUsage()}', level: LogLevel.error);
return;
}
final channel = await server.userManager.getUserIdByReference(args.first);
final minutes = args.length > 1 ? int.tryParse(args[1]) : null;
final reasonStart = minutes == null ? 1 : 2;
final reason = args.length > reasonStart
? args.skip(reasonStart).join(' ')
: null;
final until = minutes == null
? null
: DateTime.now().add(Duration(minutes: minutes));
final changed = await server.userManager.changeBan(
args.first,
banned: banned,
until: until,
reason: reason,
);
if (!changed) {
server.log(
'User not found or has no fingerprint: ${args.first}',
level: LogLevel.error,
);
return;
}
if (banned && channel != null) {
server.kick(
channel,
KickMessage(reason: KickReason.ban, message: reason),
);
}
await server.broadcastAllServerStates();
server.log(
'${banned ? 'Banned' : 'Unbanned'} ${args.first}',
level: LogLevel.info,
);
}