fix: ein schon von Hand eingetragener Server wird uebernommen, nicht uebergangen
Der Betreiber hat im Panel den Schalter fuer atm11-test umgelegt und im Discord passierte nichts. Er hat den Fehler bei sich gesucht -- ob er den Namen falsch geschrieben habe. Hat er nicht: der Server stand schon von Hand im Monitor, weil ich ihn vorhin selbst dort eingetragen hatte, und der Abgleich uebersprang ihn mit `continue`, damit nicht zwei Embeds fuer denselben Server im Kanal stehen. Das Ueberspringen war richtig, das Schweigen nicht. Wer den Schalter umlegt, sagt "dieser Server gehoert ans Panel" -- also bekommt der bestehende Eintrag jetzt den Herkunftsvermerk, statt ignoriert zu werden. Ein zweites Embed entsteht dabei nicht. Der Preis gehoert benannt und wird mitgeprueft: ab der Uebernahme nimmt ein Ausschalten den Eintrag mit, samt Bild und Links, die von Hand daran haengen. Das ist der Sinn des Schalters, aber es ist eine Uebertragung von Besitz. Ueberschrieben wird weiterhin kein Feld -- die Uebernahme setzt nur panel_name. Und die Meldung im Protokoll unterscheidet jetzt "neu" von "uebernommen"; vorher hiess beides "uebernommen", was genau die Auskunft verwischt haette, um die es hier geht. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -79,10 +79,25 @@ zeig(a.entfernt.length === 1 && a.entfernt[0].name === 'p1', 'entfernt wird nur,
|
||||
zeig(!db.listGameservers().some((s) => s.name === 'p1'), 'und der ist wirklich weg');
|
||||
|
||||
console.log('');
|
||||
console.log('=== Ein bestehender Eintrag wird nicht verdoppelt');
|
||||
// Derselbe Server, den es von Hand schon gibt: gleiche Adresse, gleicher Port.
|
||||
a = abgleichen([panel({ name: 'ATM10 im Panel', adresse: '9.9.9.9', port: 25565 })]);
|
||||
console.log('=== Ein bestehender Eintrag wird UEBERNOMMEN, nicht verdoppelt');
|
||||
// Der Fall aus dem Betrieb: der Server stand schon von Hand im Monitor, und
|
||||
// dann wurde im Panel der Schalter umgelegt. Vorher passierte sichtbar nichts
|
||||
// -- kein Embed, keine Meldung, keine Spur -- und der Betreiber hat den Fehler
|
||||
// bei sich gesucht.
|
||||
a = abgleichen([panel({ name: 'ATM10', adresse: '9.9.9.9', port: 25565 })]);
|
||||
zeig(a.angelegt.length === 0, 'gleiche Adresse und gleicher Port -> kein zweites Embed im Kanal');
|
||||
zeig(a.uebernommen.includes('ATM10'), 'sondern uebernommen -- der Schalter tut sichtbar etwas', a.uebernommen.join());
|
||||
const nun = db.getGameserver(handId);
|
||||
zeig(nun.panel_name === 'ATM10', 'die Herkunft steht jetzt auf dem Panel', nun.panel_name);
|
||||
zeig(nun.image_url === 'https://bild' && nun.links?.length === 1, 'Bild und Links bleiben dabei unangetastet');
|
||||
a = abgleichen([panel({ name: 'ATM10', adresse: '9.9.9.9', port: 25565 })]);
|
||||
zeig(a.uebernommen.length === 0, 'ein zweiter Durchlauf uebernimmt ihn nicht noch einmal');
|
||||
// Und ab jetzt raeumt das Panel ihn auch wieder weg -- das ist der Preis der
|
||||
// Uebernahme, und er gehoert geprueft.
|
||||
a = abgleichen([]);
|
||||
zeig(a.entfernt.some((e) => e.name === 'ATM10'), 'ausgeschaltet -> jetzt raeumt das Panel ihn weg');
|
||||
// Fuer die folgenden Abschnitte wieder von Hand anlegen.
|
||||
db.createGameserver({ name: 'ATM10', type: 'minecraft', host: '9.9.9.9', port: 25565, address: '9.9.9.9:25565' });
|
||||
|
||||
console.log('');
|
||||
console.log('=== Bearbeiten im Webinterface nimmt die Herkunft nicht');
|
||||
|
||||
Reference in New Issue
Block a user