soonts-aboutme-manager
v1.0.0
Published
Module Node.js pour gérer le texte 'À propos de moi' sans dépendance Discord. Gestion personnalisée de bio/profile avec support de stockage flexible.
Downloads
97
Maintainers
Readme
@soonts/aboutme-manager
Module Node.js pour gérer le texte "À propos de moi" sans dépendance Discord. Gestion personnalisée de bio/profile avec support de stockage flexible (mémoire, base de données, etc.).
📦 Installation
npm install @soonts/aboutme-manager🚀 Utilisation
Stockage en mémoire (Map)
const AboutMeManager = require('@soonts/aboutme-manager');
const manager = new AboutMeManager({
maxLength: 190,
storage: new Map()
});
// Définir un texte
const result = await manager.setAboutMe('user123', '[ • HOS ❤️ ] [ • M ma maman ]');
console.log(result.message); // "Ton à propos de moi a été mis à jour."
// Récupérer le texte
const text = await manager.getAboutMe('user123');
console.log(text); // "• HOS ❤️\n• M ma maman"
// Supprimer
await manager.clearAboutMe('user123');Avec adaptateur de base de données personnalisé
const AboutMeManager = require('@soonts/aboutme-manager');
const DatabaseStorageAdapter = require('@soonts/aboutme-manager/db-adapter');
// Vos fonctions de base de données
const { getdb, savedb } = require('./fonctions');
// Créer un adaptateur
const adapter = new DatabaseStorageAdapter(getdb, savedb);
// Initialiser le gestionnaire
const manager = new AboutMeManager({
maxLength: 190,
storage: adapter
});
// Utiliser comme précédemment
await manager.setAboutMe('user123', 'Mon texte');📚 API
AboutMeManager
Constructor
new AboutMeManager(options)Options:
maxLength(number, default: 190) - Longueur maximale du textestorage(Map|Object, default: new Map()) - Système de stockageonUpdate(Function, optional) - Callback appelé lors des mises à jour
Méthodes
setAboutMe(userId, text)
Définit le texte "À propos de moi" pour un utilisateur.
Paramètres:
userId(string) - ID de l'utilisateurtext(string|null) - Texte à définir
Retourne: Promise<{success: boolean, text: string, message: string}>
getAboutMe(userId)
Récupère le texte "À propos de moi" pour un utilisateur.
Paramètres:
userId(string) - ID de l'utilisateur
Retourne: Promise<string|null>
clearAboutMe(userId)
Supprime le texte "À propos de moi" pour un utilisateur.
Paramètres:
userId(string) - ID de l'utilisateur
Retourne: Promise<{success: boolean, message: string}>
parseText(raw)
Parse le texte avec support des lignes entre crochets [ligne1] [ligne2].
Paramètres:
raw(string) - Texte brut à parser
Retourne: string
Exemple:
manager.parseText('[ligne 1] [ligne 2] [ligne 3]');
// Retourne: "ligne 1\nligne 2\nligne 3"isValid(text)
Vérifie si le texte est valide (non vide après traitement).
Paramètres:
text(string) - Texte à vérifier
Retourne: boolean
🔌 Adaptateurs de stockage
Le module supporte différents systèmes de stockage via des adaptateurs.
Interface d'adaptateur
Un adaptateur doit implémenter ces méthodes :
{
get(userId) => Promise<string|null> | string|null,
set(userId, value) => Promise<void> | void,
delete(userId) => Promise<void> | void
}Exemple d'adaptateur personnalisé
class MyCustomAdapter {
async get(userId) {
// Récupérer depuis votre source
return await myDatabase.getAboutMe(userId);
}
async set(userId, value) {
// Sauvegarder dans votre source
await myDatabase.saveAboutMe(userId, value);
}
async delete(userId) {
// Supprimer de votre source
await myDatabase.deleteAboutMe(userId);
}
}
const manager = new AboutMeManager({
storage: new MyCustomAdapter()
});📝 Exemples
Exemple complet avec callback
const manager = new AboutMeManager({
maxLength: 190,
storage: new Map(),
onUpdate: async (userId, text) => {
console.log(`Mise à jour pour ${userId}:`, text);
// Faire quelque chose avec la mise à jour
}
});Gestion d'erreurs
try {
const result = await manager.setAboutMe('user123', 'Mon texte');
if (!result.success) {
console.error('Erreur:', result.message);
}
} catch (error) {
console.error('Exception:', error);
}🤝 Contribution
Les contributions sont les bienvenues ! N'hésitez pas à ouvrir une issue ou une pull request.
📄 License
MIT License - voir le fichier LICENSE pour plus de détails.
👤 Auteur
Soonts
