Я пытаюсь заставить бота Discord создать базу данных, которая является в основном пользовательской картой (строка для каждого пользователя и столбцы для идентификатора, псевдонима, URL-адреса аватара и т. Д.), Когда он получает команду! Getdata.
Я дошел до того, что база данных успешно принимает данные, в данном случае имя пользователя и идентификатор пользователя, но отображает все уникальные значения в двух столбцах в виде длинных значений, разделенных запятыми (т. Е. В столбце имени пользователя отображается 'user1, user2, user3' ).
Я уверен, что это так, но я действительно борюсь с реструктуризацией. Я бы хотел, чтобы он взял все данные из карты объектов (client.users или message.guild.members), но я не могу понять это.
Другой вариант, который я сейчас пытаюсь сделать, - создать строку для каждого пользователя, а затем заполнить значения, которые я хочу сохранить, но у меня ничего не получается быстро.
Я очень новичок в SQLite (и в этом отношении к node / DiscordJS / JS), поэтому любые советы очень ценятся.
index.js
const Discord = require('discord.js');
const client = new Discord.Client();
const sql = require('sqlite3');
let db = new sql.Database("users.sqlite", (err) => {
if (err) {
console.log('Error connecting to the database', err)
} else {
console.log('Database connected.')
}
})
let token = process.env.CLIENT_TOKEN;
let prefix = process.env.PREFIX ;
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
db.run(`CREATE TABLE IF NOT EXISTS users(username TEXT, id TEXT)`);
})
client.on('message', function(message) {
if (!message.content.startsWith(prefix));
const args = message.content.slice(prefix.length).split(/ +/);
const command = args.shift().toLowerCase();
if (command === 'getdata') {
let username = message.guild.members.map(m=>m.user.username);
let userid = message.guild.members.map(m=>m.user.id);
db.run(`INSERT OR REPLACE INTO users(username, id) VALUES(?,?)`, [`${username}`,`${userid}`]);
return message.channel.send(`User database updated.`);
}
});
client.login(token);
Если вас интересует форматирование или способ написания, ответ будет двояким:
- Я довольно новичок в этом
- Это был единственный способ получить значения в базе данных, чтобы они возвращали что-то отличное от нуля
Заранее спасибо,