2017-06-01 5 views
0

Also ich hier diesen Code ein Bot für Zwietracht erschaffe sendet eine PM an die Person, die den Server verbindet:discord.js SQLite binden oder Spaltenindex außerhalb des zulässigen Bereichs

client.on("guildMemberAdd", member => { 
    let guild = member.guild; 
    console.log(`${member.user.username} has joined your server`); 
     member.user.send('Welcome to my server!'); 
}); 

Ich versuche, eine zu schaffen Datenbank mit sQLite, die Menschen zu protokollieren, die Benutzer-ID und Benutzernamen verbindet, heres, was ich habe:

client.on("guildMemberAdd", member => { 
    let guild = member.guild; 
    console.log(`${member.user.username} has joined your server`); 
    sql.run(`UPDATE users SET userId = ${member.id} WHERE userId = ${member.id}`); 
     member.user.send('Welcome to my server!'); 

    sql.get(`SELECT * FROM users WHERE userId = '${member.id}'`).then(row => { 
      if (!row) { 
      sql.run('INSERT INTO users (userId, username) VALUES (?, ?)', [member.id, 1, 0]); 
     } else { 
      sql.run(`UPDATE users SET username = ${member.user.username} WHERE userId = ${member.id}`); 
     } 

    }).catch(() => { 
     console.error; 
     sql.run('CREATE TABLE IF NOT EXISTS users (userId TEXT, username TEXT)').then(() => { 
      sql.run('INSERT INTO users (userId, username) VALUES (?, ?)', [member.id, 1, 0]); 
     }); 

    }); 
}); 

ich erhalte:

UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): Error: SQLITE_RANGE: bind or column index out of range, whats wrong with the code? can anyone fix it?

Antwort

1

sql.run('INSERT INTO users (userId, username) VALUES (?, ?)', [member.id, 1, 0]); Sie geben 3 Werte (member.id, 1 und 0), wo Sie nur 2 (userId und username) haben. Außerdem gibt sql.get() kein Versprechen zurück, sodass Sie nicht verwenden können. Der zweite Parameter ist die Callback-Funktion, die zwei Argumente verwendet, mögliche Fehler und die Zeile (n), so stattdessen sollte Ihr Code aussehen

sql.get('SELECT * FROM users WHERE userId = ?',[member.id] , (err,row) => { 
     if (!row) { 
     sql.run('INSERT INTO users (userId, username) VALUES (?, ?)', [member.id, 1]); 
    } else { 
     sql.run('UPDATE users SET username = ? WHERE userId = ?', [member.user.username, member.id]); 
    } 
}) 
Verwandte Themen