Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@telegraf/session

Package Overview
Dependencies
Maintainers
4
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@telegraf/session

Session store adapters for Telegraf

  • 2.0.0-beta.7
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
4
Created
Source

@telegraf/session

This package provides official storage adapters for Telegraf v4.12+ sessions [see motivation].

[!WARNING] You're not meant to import the default path! Read one of the following sections before using this module.

An in-memory session module is bundled with Telegraf. The following modules are available here:

Redis

Install the official Redis driver alongside this module.

npm i @telegraf/session redis

Usage is pretty straightforward:

import { Redis } from "@telegraf/session/redis";

const store = Redis({
	url: "redis://127.0.0.1:6379",
});

const bot = new Telegraf(token, opts);
bot.use(session({ store }));

// the rest of your bot

To reuse an existing Redis client, use Redis({ client }) instead.

MongoDB

Install the official MongoDB driver alongside this module.

npm i @telegraf/session mongodb

Usage is pretty straightforward:

import { Mongo } from "@telegraf/session/mongodb";

const store = Mongo({
	url: "mongodb://127.0.0.1:27017",
	database: "telegraf-bot",
});

const bot = new Telegraf(token, opts);
bot.use(session({ store }));

// the rest of your bot

To reuse an existing MongoDB client, use Mongo({ client }) instead.

SQLite

Install the Better-SQLite3 driver and types alongside this module.

npm i @telegraf/session kysely better-sqlite3
npm i --save-dev @types/better-sqlite3

Usage is pretty straightforward:

import { SQLite } from "@telegraf/session/sqlite";

const store = SQLite({
	filename: "./telegraf-sessions.sqlite",
});

const bot = new Telegraf(token, opts);
bot.use(session({ store }));

// the rest of your bot

To reuse an existing Better-SQLite3 database instance, use SQLite({ database }) instead.

PostgreSQL

Install the 'pg' PostgreSQL driver and types alongside this module.

npm i @telegraf/session kysely pg
npm i --save-dev @types/pg

Usage is pretty straightforward:

import { Postgres } from "@telegraf/session/pg";

const store = Postgres({
	host: "127.0.0.1",
	database: "telegraf-test",
	user: "database-user",
	password: "hunter2",
});

const bot = new Telegraf(token, opts);
bot.use(session({ store }));

// the rest of your bot

To reuse an existing pg pool, use Postgres({ pool }) instead.

MySQL / MariaDB

Install the 'mysql2' MySQL driver alongside this module.

npm i @telegraf/session kysely mysql2

Usage is pretty straightforward:

import { MySQL } from "@telegraf/session/mysql";

const store = MySQL({
	host: "127.0.0.1",
	database: "telegraf-test",
	user: "database-user",
	password: "hunter2",
});

const bot = new Telegraf(token, opts);
bot.use(session({ store }));

// the rest of your bot

To reuse an existing MySQL2 pool, use MySQL({ pool }) instead.

Background

Since telegraf#1372, it has been known that all asynchronous session middleware have been prone to race-conditions. This was addressed in telegraf#1713, but third-party session middleware continue to be affected. Since Telegraf 1.12.0, it's recommended that third-party plugins only provide the store parameter for session, instead of implementing session themselves. This way, they can take advantage of the safety provided by Telegraf's builtin session. Of course, if your plugin has an exceptional usecase, it may need to implement its own middleware.

To begin to solve this problem, we officially maintain the 5 most common storage backends. This package is considered beta, and may have minor breaking changes and bugfixes before a semver stable release. Feedback is welcome via issues and in the group: TelegrafJSChat

Keywords

FAQs

Package last updated on 28 Jan 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc