recker112 / telegraf-postgres-session

MIT License
2 stars 3 forks source link

PostgreSQL session middleware for Telegraf

Installation

npm i telegraf-postgres-session

Setup

Create table in your database

CREATE TABLE postgress_sessions(id varchar PRIMARY KEY, session varchar);

Example

import { Telegraf } from 'telegraf';
import PostgresSession from 'telegraf-postgres-session';

const bot = new Telegraf(process.env.BOT_TOKEN) // Your Bot token here

bot.use((new PostgresSession({
    connectionString: process.env.DATABASE_URL,
        ssl: {
            rejectUnauthorized: false
        }
})).middleware());

bot.on('message', ctx => {
    ctx.session.counter = ctx.session.counter ? ctx.session.counter : 0
    ctx.session.counter++
    ctx.reply(ctx.session.counter)
});

bot.launch();

Example with Typescript

import { Context, Telegraf } from 'telegraf';
import PostgresSession from 'telegraf-postgres-session';

interface SessionContext extends Context {
 session: any;
};

const bot: Telegraf<SessionContext> = new Telegraf(process.env.BOT_TOKEN as string);// Your Bot token here

bot.use((new PostgresSession({
    connectionString: process.env.DATABASE_URL,
        ssl: {
            rejectUnauthorized: false
        }
})).middleware());

bot.on('message', ctx => {
    ctx.session.counter = ctx.session.counter ? ctx.session.counter : 0
    ctx.session.counter++
    ctx.reply(ctx.session.counter)
});

bot.launch();

The database connection configuration is described in The PostgreSQL API.