Skip to content

GramIO API Reference / @gramio/callback-data/dist / CallbackData

Class: CallbackData<SchemaType, SchemaTypeInput>

Defined in: callback-data/index.d.ts:88

Class-helper that construct schema and serialize/deserialize with CallbackData.pack and CallbackData.unpack methods

Example

typescript
const someData = new CallbackData("example").number("id");

new Bot()
    .command("start", (context) =>
        context.send("some", {
            reply_markup: new InlineKeyboard().text(
                "example",
                someData.pack({
                    id: 1,
                })
            ),
        })
    )
    .callbackQuery(someData, (context) => {
        context.queryData; // is type-safe
    });

Type Parameters

Type ParameterDefault type
SchemaType extends Record<string, any>Record<never, never>
SchemaTypeInput extends Record<string, any>Record<never, never>

Constructors

Constructor

new CallbackData<SchemaType, SchemaTypeInput>(nameId): CallbackData<SchemaType, SchemaTypeInput>

Defined in: callback-data/index.d.ts:95

Pass the id with which you can identify the CallbackData

Parameters

ParameterType
nameIdstring

Returns

CallbackData<SchemaType, SchemaTypeInput>

Properties

PropertyModifierTypeDescriptionDefined in
idpublicstringid for identify the CallbackDatacallback-data/index.d.ts:91
nameIdpublicstring-callback-data/index.d.ts:89
schemaprotectedSchema-callback-data/index.d.ts:93

Methods

boolean()

boolean<Key, Optional, Default>(key, options?): CallbackData<{ [Key in string | number | symbol]: (SchemaType & AddFieldOutput<"boolean", Key, Optional, never, Default, never>)[Key] }, { [Key in string | number | symbol]: (SchemaTypeInput & AddFieldInput<"boolean", Key, Optional, never, Default, never>)[Key] }>

Defined in: callback-data/index.d.ts:110

Add boolean property to schema

Type Parameters

Type ParameterDefault type
Key extends string-
Optional extends booleanfalse
Default extends booleannever

Parameters

ParameterTypeDescription
keyKeyName of property
options?FieldOptions<"boolean", Optional, never, Default>-

Returns

CallbackData<{ [Key in string | number | symbol]: (SchemaType & AddFieldOutput<"boolean", Key, Optional, never, Default, never>)[Key] }, { [Key in string | number | symbol]: (SchemaTypeInput & AddFieldInput<"boolean", Key, Optional, never, Default, never>)[Key] }>


data()

data<Key, Optional, Data>(key, data, options?): CallbackData<{ [Key in string | number | symbol]: (SchemaType & (Optional extends true ? { [K in string]?: InferDataPack<Data> } : { [K in string]: InferDataPack<Data> }))[Key] }, { [Key in string | number | symbol]: (SchemaTypeInput & (Optional extends true ? { [K in string]?: InferDataPack<Data> } : { [K in string]: InferDataPack<Data> }))[Key] }>

Defined in: callback-data/index.d.ts:122

Type Parameters

Type ParameterDefault type
Key extends string-
Optional extends booleanfalse
Data extends CallbackData<Record<never, never>, Record<never, never>>never

Parameters

ParameterType
keyKey
dataData
options?FieldOptions<"data", Optional, never>

Returns

CallbackData<{ [Key in string | number | symbol]: (SchemaType & (Optional extends true ? { [K in string]?: InferDataPack<Data> } : { [K in string]: InferDataPack<Data> }))[Key] }, { [Key in string | number | symbol]: (SchemaTypeInput & (Optional extends true ? { [K in string]?: InferDataPack<Data> } : { [K in string]: InferDataPack<Data> }))[Key] }>


enum()

enum<Key, Optional, T, Default>(key, enumValues, options?): CallbackData<{ [Key in string | number | symbol]: (SchemaType & AddFieldOutput<"enum", Key, Optional, T[number], Default, never>)[Key] }, { [Key in string | number | symbol]: (SchemaTypeInput & AddFieldInput<"enum", Key, Optional, T[number], Default, never>)[Key] }>

Defined in: callback-data/index.d.ts:116

Add enum property to schema

Type Parameters

Type ParameterDefault type
Key extends string-
Optional extends booleanfalse
T extends any[] | readonly any[]never
Default extends anynever

Parameters

ParameterTypeDescription
keyKeyName of property
enumValuesTEnum values
options?FieldOptions<"enum", Optional, T, Default>-

Returns

CallbackData<{ [Key in string | number | symbol]: (SchemaType & AddFieldOutput<"enum", Key, Optional, T[number], Default, never>)[Key] }, { [Key in string | number | symbol]: (SchemaTypeInput & AddFieldInput<"enum", Key, Optional, T[number], Default, never>)[Key] }>


extend()

extend<OtherSchemaType, OtherSchemaTypeInput>(other): CallbackData<{ [Key in string | number | symbol]: (SchemaType & OtherSchemaType)[Key] }, { [Key in string | number | symbol]: (SchemaTypeInput & OtherSchemaTypeInput)[Key] }>

Defined in: callback-data/index.d.ts:173

Type Parameters

Type Parameter
OtherSchemaType extends Record<string, unknown>
OtherSchemaTypeInput extends Record<string, unknown>

Parameters

ParameterType
otherCallbackData<OtherSchemaType, OtherSchemaTypeInput>

Returns

CallbackData<{ [Key in string | number | symbol]: (SchemaType & OtherSchemaType)[Key] }, { [Key in string | number | symbol]: (SchemaTypeInput & OtherSchemaTypeInput)[Key] }>


filter()

filter(data): boolean

Defined in: callback-data/index.d.ts:131

Method that return true if data is this CallbackData

Parameters

ParameterTypeDescription
datastringString with data

Returns

boolean


number()

number<Key, Optional, Default>(key, options?): CallbackData<{ [Key in string | number | symbol]: (SchemaType & AddFieldOutput<"number", Key, Optional, never, Default, never>)[Key] }, { [Key in string | number | symbol]: (SchemaTypeInput & AddFieldInput<"number", Key, Optional, never, Default, never>)[Key] }>

Defined in: callback-data/index.d.ts:105

Add number property to schema

Type Parameters

Type ParameterDefault type
Key extends string-
Optional extends booleanfalse
Default extends numbernever

Parameters

ParameterTypeDescription
keyKeyName of property
options?FieldOptions<"number", Optional, never, Default>-

Returns

CallbackData<{ [Key in string | number | symbol]: (SchemaType & AddFieldOutput<"number", Key, Optional, never, Default, never>)[Key] }, { [Key in string | number | symbol]: (SchemaTypeInput & AddFieldInput<"number", Key, Optional, never, Default, never>)[Key] }>


pack()

pack<T>(...args): string

Defined in: callback-data/index.d.ts:150

A method for serializing object data defined by schema into a string

Type Parameters

Type Parameter
T extends Record<string, any>

Parameters

ParameterType
...argsIsOptionalType<SchemaTypeInput> extends true ? [T] : [T]

Returns

string

Example

ts
const someData = new CallbackData("example").number("id");

context.send("some", {
	reply_markup: new InlineKeyboard().text(
		"example",
		someData.pack({
			id: 1,
		}),
	),
});

regexp()

regexp(): RegExp

Defined in: callback-data/index.d.ts:126

Method that return RegExp to match this CallbackData

Returns

RegExp


safeUnpack()

safeUnpack(data): SafeUnpackResult<SchemaType>

Defined in: callback-data/index.d.ts:172

Safe version of CallbackData.unpack that never throws. Returns { success: true, data } on success or { success: false, error } on failure.

Useful for handling outdated callback data from old inline keyboards after schema changes.

Parameters

ParameterType
datastring

Returns

SafeUnpackResult<SchemaType>

Example

ts
const result = someData.safeUnpack(data);
if (result.success) {
    console.log(result.data);
} else {
    context.answerCallbackQuery("This button is outdated!");
}

string()

string<Key, Optional, Default>(key, options?): CallbackData<{ [Key in string | number | symbol]: (SchemaType & AddFieldOutput<"string", Key, Optional, never, Default, never>)[Key] }, { [Key in string | number | symbol]: (SchemaTypeInput & AddFieldInput<"string", Key, Optional, never, Default, never>)[Key] }>

Defined in: callback-data/index.d.ts:100

Add string property to schema

Type Parameters

Type ParameterDefault type
Key extends string-
Optional extends booleanfalse
Default extends stringnever

Parameters

ParameterTypeDescription
keyKeyName of property
options?FieldOptions<"string", Optional, never, Default>-

Returns

CallbackData<{ [Key in string | number | symbol]: (SchemaType & AddFieldOutput<"string", Key, Optional, never, Default, never>)[Key] }, { [Key in string | number | symbol]: (SchemaTypeInput & AddFieldInput<"string", Key, Optional, never, Default, never>)[Key] }>


unpack()

unpack(data): SchemaType

Defined in: callback-data/index.d.ts:155

A method for deserializing data object by schema from a string

Parameters

ParameterTypeDescription
datastringString with data (please check that this string matched by CallbackData.regexp)

Returns

SchemaType


uuid()

uuid<Key, Optional, Default>(key, options?): CallbackData<{ [Key in string | number | symbol]: (SchemaType & AddFieldOutput<"uuid", Key, Optional, never, Default, never>)[Key] }, { [Key in string | number | symbol]: (SchemaTypeInput & AddFieldInput<"uuid", Key, Optional, never, Default, never>)[Key] }>

Defined in: callback-data/index.d.ts:121

Add uuid property to schema

Type Parameters

Type ParameterDefault type
Key extends string-
Optional extends booleanfalse
Default extends stringnever

Parameters

ParameterTypeDescription
keyKeyName of property
options?FieldOptions<"uuid", Optional, never, Default>-

Returns

CallbackData<{ [Key in string | number | symbol]: (SchemaType & AddFieldOutput<"uuid", Key, Optional, never, Default, never>)[Key] }, { [Key in string | number | symbol]: (SchemaTypeInput & AddFieldInput<"uuid", Key, Optional, never, Default, never>)[Key] }>