Hello,
I want to ask, I’m getting an error while running mongodb for telegram bot. the error is Error connecting to MongoDB: TypeError: session is not a constructor. Here I show the code file database.js
const connectToDatabase = async () => {
try {
const uri = process.env.MONGODB_URI;
const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });
await client.connect();
console.log('Connected to MongoDB successfully');
const db = client.db();
const sessions = new session(db, {
collectionName: 'session',
sessionName: 'telegrafSessions'
});
return { db, sessions };
} catch (error) {
console.error('Error connecting to MongoDB:', error);
throw error;
}
};
The modules that I installed on database.js
const { MongoClient } = require('mongodb');
const { session } = require('telegraf-session-mongodb');
Here is the index.js file for connecting to the database.js file
const { Telegraf, Markup } = require('telegraf');
const { connectToDatabase, saveUserSession, saveUserLog } = require('./src/database');
// Connect database
connectToDatabase()
.then(({ db, sessions }) => {
// Middleware session user
bot.use(sessions.middleware());
bot.use(async (ctx, next) => {
ctx.session.db = db; // insert object db session
await next();
});
// Middleware save user telegram
bot.use((ctx, next) => {
saveUserSession(db, ctx.session)
.then(() => next())
.catch((error) => {
console.error('Error saving user session:', error);
ctx.reply('Oops! Something went wrong.');
});
});
// Middleware save log user telegram
bot.use((ctx, next) => {
const log = {
session_id: ctx.session.session_id,
user_id: ctx.from.id,
timestamp: new Date(),
message: ctx.message.text
};
saveUserLog(db, log);
return next();
});