1.0.3 • Published 3 years ago

@waptik/grammy-supabase-adapter v1.0.3

Weekly downloads
-
License
ISC
Repository
github
Last release
3 years ago

Depreciation notice

This project is not maintained anymore. Please consider using the official plugin: @grammyjs/storage-supabase

New Section

Supabase database storage adapter for grammY

Database storage adapter that can be used to store your session data in Supabase database when using sessions.

Installation

npm install @waptik/grammy-supabase-adapter --save

Instructions

To get started, you first need to

  • Have both @supabase/supabase-js and grammy installed
  • Have a defined table for sessions in supabase will the following informations:
    • id as a primary key of string, cannot be null either
    • session as string, cannot be null as well

How to use

Here is a simple example on how it's done:

import { Bot, Context, session, SessionFlavor } from 'grammy';
import { supabaseAdapter } from '@waptik/grammy-supabase-adapter';
import { createClient } from '@supabase/supabase-js';

interface SessionData {
  counter: number;
}
type MyContext = Context & SessionFlavor<SessionData>;

const URL = 'http://localhost:3000';
const KEY = 'some.fake.key';

// supabase instance
const supabase = createClient(URL, KEY);

//create storage
const storage = supabaseAdapter({
  supabase,
  table: 'session', // the defined table name you want to use to store your session
});

// Create bot and register session middleware
const bot = new Bot<MyContext>('');
bot.use(
  session({
    initial: () => ({ counter: 0 }),
    storage,
  }),
);

// Register your usual middleware, and start the bot
bot.command('stats', (ctx) => ctx.reply(`Already got ${ctx.session.counter} photos!`));
bot.on(':photo', (ctx) => ctx.session.counter++);

bot.start();