static new L startVMLister_hiddenVMs; static Lock startVMLister_lock = lock(); concept startVMLister_Data { long downloaded, uploaded; } static void startVMLister() { S bot = "VM Lister."; if (!hasBot(bot)) { makeBot(bot, f startVMLister_answer); } } static S startVMLister_answer(S s) { lock startVMLister_lock; new Matches m; if "started vm * *" { if "hiding vm *" { startVMLister_hiddenVMs.add(parseInt($1)); ret "OK"; } if "register uploaded bytes *" { data.uploaded += parseInt($1); data.change(); ret "OK, total: " + data.downloaded + "/" + data.uploaded; } if "get traffic stats|traffic stats" ret "Total bytes downloaded/uploaded: " + data.downloaded + "/" + data.uploaded; null; }