• If you need help or want to discuss things, you now can also join us on our Discord Server!
  • A first preview of the unlimited version of SinusBot can be found in the Upcoming Changes thread. A version for Windows will follow, but we don't have a release date, yet.

DE Script Probleme bezüglich eines Datenbank Updates

TOminerTV

Member
Hallo Forum,

ist es möglich per Bot Daten in einer Datenbank zu aktualisieren?
1588429623423.png

Habe wie oben zu sehen eine UPDATE-Anfrage gesendet, allerdings bin ich mir unschlüssig ob die funktioniert, es gibt keine Fehlermeldung, allerdings auch keine neuen Daten in der Datenbank.

Bitte um Hilfe.

Mfg
Tobias
 

Caudex

Insider
Insider
Ja, es ist möglich per Bot die Daten in einer Datenbank zu aktualisieren.
Du musst jedoch sicherstellen, dass deine Datenbank korrekt installiert ist und du die Datanbank-Verbindung auch richtig aufgebaut hast.
Zum Verbindungsaufbau kannst du mal hier schauen. Es ist äußerst empfehlenswert, sich den Log ausgeben zu lassen mindestens solange du dein Skript noch testest.

Wenn du denkst, dass du alles richtig gemacht hast, kannst du uns ja mal dein Skript schicken, damit wir dir weiterhelfen können.
 

TOminerTV

Member
So das hier ist der Code, an sich funktioniert alles bis auf das aktuallisieren der Daten im On-Chat-Event.

Code:
registerPlugin({
    name: 'Gelber Karten Bemerker-Script!',
    version: '1.0',
    description: 'Das Script fragt nach einer Begründung für das setzen von gelben Karten!',
    author: 'Tobias *<tobias.*>',
    requiredModules: ['db']
}, function(_, sinusbot, config) {
    const event = require('event');
    const backend = require('backend');
    var db = require('db');
    var engine = require('engine');
    var helpers = require('helpers');
    var openCard = {
        cards: []
    };
    var dbc = db.connect({
        driver: 'mysql',
        host: '127.0.0.1',
        username: '',
        password: '*****',
        database: 'db'
    }, function(err) {
        if (err) {
            engine.log("[GKB] ERROR: " + err);
        }
    });
    event.on('serverGroupAdded', function(event) {
        if (event.invoker.name() == backend.getNick()) {
            return;
        }
        if (event.serverGroup.id() === "434363" || event.serverGroup.id() === "434364") {
            engine.log("Gelbe / Rote Karte wurde gesetzt!");
            var redCard = 0;
            if (event.serverGroup.id() == 434364) {
                redCard = 1;
            }
            if (dbc) dbc.exec("INSERT INTO yellowRedCards (yrc_setter_ts3id, yrc_setter, yrc_holder_ts3id, yrc_holder, yrc_redCard) VALUES (?, ?, ?, ?, ?)", event.invoker.uid(), event.invoker.name(), event.client.uid(), event.client.name(), redCard);
            event.invoker.chat("Du hast eine " + event.serverGroup.name() + "-Karte gesetzt, bitte gib eine Begründung ein:");
            openCard.cards.push({
                "invokerUID": event.invoker.uid(),
                "cardID": getCardID(),
            }); /*openCard.cards.push({                                                                                                                                                                                                                          "invokerUID" : event.invoker.uid(),                                                                                                                                                                                                          "clientUID" : event.client.uid(),                                                                                                                                                                                                            "cardType" : event.serverGroup.id(),                                                                                                                                                                                                     });*/
        }
    }) event.on('serverGroupRemoved', function(event) {
        if (event.serverGroup.id() === "434363" || event.serverGroup.id() === "434364") {
            event.client.addToServerGroup(event.serverGroup.id());
        }
    }) event.on('chat', function(event) {
        for (i in openCard.cards) {
            if (openCard.cards[i].invokerUID == event.client.uid()) {
                engine.log(openCard.cards[i].invokerUID + " | " + event.client.uid());
                engine.log(":::" + openCard.cards[i].cardID + ":::");
                if (dbc) dbc.exec("UPDATE yellowRedCards SET yrc_channel = '" + event.channel.name() + "', yrc_reason = '" + event.text + "' WHERE yrc_id = '" + openCard.cards[i].cardID + "'");
                delete openCard.cards[i].invokerUID;
                delete openCard.cards[i].cardID;
                break;
            }
        }
    }) var resultTest = "";

    function getCardID() {
        if (dbc) dbc.query("SELECT yrc_id FROM yellowRedCards ORDER BY yrc_id DESC LIMIT 1", function(err, res) {
            if (!err) {
                res.forEach(function(row) {
                    var yrcID = row['yrc_id'];
                    for (var i = 0; i < yrcID.length; i++) {
                        resultTest += String.fromCharCode(parseInt(yrcID[i]));
                    }
                    engine.log(":1::" + resultTest + ":::");
                });
            }
        });
        engine.log(":::" + resultTest + ":::");
        return resultTest;
    }
});
 

Caudex

Insider
Insider
1. Was hast du alles rausgelöscht bevor du den Code gepostet hast? (nur im db.connect() ?)
2. Füge in jedem Datenbank-Befehl einen log zum debuggen ein, z.B.:
if (dbc) dbc.exec("UPDATE yellowRedCards SET yrc_channel = '" + event.channel.name() + "', yrc_reason = '" + event.text + "' WHERE yrc_id = '" + openCard.cards.cardID + "'"), function (err, res) { if(err) { engine.log(err)}});
Und dann schau mal was du wo rausbekommst.
 

TOminerTV

Member
1. Was hast du alles rausgelöscht bevor du den Code gepostet hast? (nur im db.connect() ?)
2. Füge in jedem Datenbank-Befehl einen log zum debuggen ein, z.B.:
if (dbc) dbc.exec("UPDATE yellowRedCards SET yrc_channel = '" + event.channel.name() + "', yrc_reason = '" + event.text + "' WHERE yrc_id = '" + openCard.cards.cardID + "'"), function (err, res) { if(err) { engine.log(err)}});
Und dann schau mal was du wo rausbekommst.

Ich habe das Problem gefunden, die UPDATE-Query scheint problemlos zu laufen, jedoch bekomme ich keine Update-ID, die Funktion getCardID() hat intern die korrekte ID, aber der Rückgabewert ist immer nichts, also noch nicht mal null.
 
Top