Bonjour,

J'ai un soucis actuellement avec mon code : je n'arrive pas à insérer des données dans ma base de données SQLite.

Voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
client.on('ready', function () {
  console.log("Je suis connecté !");
  const table = sql.prepare("SELECT count(*) FROM sqlite_master WHERE type='table' AND name = 'data';").get();
  if (!table['count(*)']) {
    sql.prepare("CREATE TABLE data (id TEXT PRIMARY KEY, user TEXT, msgSent INTEGER, msgPts DECIMAL(5,2), vocTime INTEGER, vocPts DECIMAL(5,2));").run();
    sql.prepare("CREATE UNIQUE INDEX idx_data_id ON data (id);").run();
    sql.pragma("synchronous = 1");
    sql.pragma("journal_mode = wal");
  }
 
  client.getMsg = sql.prepare("SELECT id, user, msgSent, msgPts FROM data WHERE id = ?");
  client.setMsg = sql.prepare("INSERT OR REPLACE INTO data (id, user, msgSent, msgPts) VALUES (@id, @user, @msgSent, @msgPts);");
 
  client.getVoc = sql.prepare("SELECT id, user, vocTime, vocPts FROM data WHERE id = ?");
  client.setVoc = sql.prepare("INSERT OR REPLACE INTO data (id, user, vocTime, vocPts) VALUES (@id, @user, @vocTime, @vocPts);");
})
 
client.on("message", message => {
  if (message.author.bot) return;
  let msg;
  if (message.guild) {
    msg = client.getMsg.get(message.author.id);
    if (!msg) {
      msg = { id: message.author.id, user: message.member.displayName, msgSent: 0, msgPts: 0}
    }
    msg.msgSent++
    msg.msgPts = (msg.msgSent*0.12).toFixed(2);
 
    if (msg.msgPts > 300) {msg.msgPts = 300}
    console.log(msg.id)
    client.setMsg.run(msg);
  }
 
  if (message.content.indexOf(prefix) !== 0) return;
 
  const args = message.content.slice(prefix.length).trim().split(/ +/g);
  const command = args.shift().toLowerCase();
 
 if(command === "points") {
  if (msg.msgSent<2) {
    message.channel.send("Vous avez envoyé " + msg.msgSent + " message!")
    message.channel.send("Vous avez cumulé " + msg.msgPts + " points")
  } else {
    message.channel.send("Vous avez envoyé " + msg.msgSent + " messages!")
    message.channel.send("Vous avez cumulé " + msg.msgPts + " points")
  }
 }   
})
 
client.on('voiceStateUpdate', (oldMember,newMember) => {
 
  let newMemberChannel = newMember.voiceChannel
  let oldMemberChannel = oldMember.voiceChannel
 
  let userData = JSON.parse(fs.readFileSync('Storage/voiceData.json'))
 
  if (oldMemberChannel === undefined)  {
 
    let date = new Date()
    let oldDate = date.getTime()
 
    if (!userData[oldMember.id]) userData[oldMember.id] = {
      oldDate: 0
    }
 
    userData[oldMember.id].oldDate = oldDate
 
    fs.writeFile('Storage/voiceData.json', JSON.stringify((userData), null, 4), (err) => {
      if (err) console.error(err);
    })
 
    oldMember.createDM().then(channel => {
     channel.send(oldMember.displayName + " s'est connecté !")
    })
  }
 
  if (newMemberChannel === undefined && oldMemberChannel !== undefined) {
    let date = new Date()
    let newDate = date.getTime()
    let oldDate = userData[oldMember.id].oldDate
    let voc
 
    voc = client.getVoc.get(oldMember.id)
    if (!voc) {
      voc = { id: oldMember.id, user: oldMember.displayName, vocTime: 0, vocPts: 0}
    }
    let vocTime = (newDate - oldDate)/60000
    let vocPts, vocPtsI
    voc.vocTime = parseInt(vocTime)
    vocPts = voc.vocTime*0.06
    vocPtsI = voc.vocPts
 
    voc.vocPts = vocPtsI + vocPts
    if (voc.vocPts > 700) {voc.vocPts = 700}
     console.log(voc.id)
    client.setVoc.run(voc)
 
    newMember.createDM().then(channel => {
      channel.send(newMember.displayName + " s'est déconnecté !")
      channel.send("Durée passée dans un salon vocal : " + Math.round(vocTime*60)/1 + " s soit " + voc.vocTime + " m")
      channel.send("Vous avez cumulé " + "**" + voc.vocPts + "**" + " pts")
    })
  }
})
Lorsque j'envoie que des messages, le total des messages envoyés s'inscrit bien dans ma base de données. Mais si je rejoins un channel vocal, il me réinitialise ma base de données et insère les nouvelles valeurs par rapport au vocal. Et inversement!
J'aimerai savoir si c' possible de réunir toutes ces informations sans écraser les anciennes données et donc d'avoir tout dans une seule base de données.

Merci pour votre future aide