Skip to content

Tipe TypeScript

VibeGram mengekspor deklarasi TypeScript untuk objek utama Telegram Bot API 10.1, helper framework, opsi middleware, dan class error.

ts
import type { Update, Message, User, Chat, Context } from 'vibegram';

Tipe Core

TipeDeskripsi
UpdateUpdate masuk dari Telegram.
MessagePayload pesan.
UserUser Telegram.
ChatIdentitas chat ringkas dari update.
ChatFullInfoMetadata chat lengkap dari getChat.
CallbackQueryCallback tombol inline.
InlineQueryQuery inline mode.
Context<S>Context handler per update, opsional diketik dengan data session.

Tipe Media

TipeDeskripsi
PhotoSizeMetadata foto dengan dimensi.
AudioFile audio.
DocumentFile umum.
VideoFile video.
VoiceVoice note.
VideoNoteVideo note bulat.
AnimationGIF atau animasi H.264.
LivePhotoPayload live photo Bot API 10.0.
StickerMetadata sticker.
ContactKontak yang dibagikan.
LocationKoordinat geografis.

Tipe Interaktif

TipeDeskripsi
PollPayload poll atau quiz.
PollOptionSatu opsi poll.
PollMediaMedia Bot API 10.0 yang melekat ke poll.
DiceHasil dice animasi.
VenueVenue dengan lokasi.
GamePayload game Telegram.
WebAppDataData dari Mini App.

Tipe Keyboard

TipeDeskripsi
ReplyMarkupUnion payload reply markup yang didukung.
InlineKeyboardMarkupLayout inline keyboard.
InlineKeyboardButtonTombol inline keyboard.
ReplyKeyboardMarkupLayout reply keyboard native.
KeyboardButtonTombol reply keyboard native.
ReplyKeyboardRemovePayload hapus keyboard.
ForceReplyPayload force reply.

Tipe Entity

TipeDeskripsi
MessageEntityEntity teks seperti command, link, bold, code, spoiler, atau blockquote.

String entity yang didukung mencakup mention, hashtag, bot_command, url, email, phone_number, bold, italic, underline, strikethrough, spoiler, code, pre, text_link, text_mention, custom_emoji, blockquote, expandable_blockquote, dan date_time.

Tipe Update

TipeDeskripsi
ChatMemberUpdatedPerubahan status member.
ChatJoinRequestRequest join chat.
ShippingQueryQuery shipping pembayaran.
PreCheckoutQueryQuery pre-checkout pembayaran.
ChatBoostUpdatedEvent chat boost.
ChatBoostRemovedEvent chat boost dihapus.
PaidMediaPurchasedEvent pembelian paid media.

Tipe Extra

Tipe extra mendeskripsikan parameter opsional untuk shortcut method.

ts
import type {
    ExtraReplyMessage,
    ExtraMedia,
    ExtraEditMessage,
    ExtraPoll,
    ExtraBanMember,
    ExtraRestrictMember,
    ExtraPromoteMember,
    ExtraInviteLink,
} from 'vibegram';

Tipe State dan Helper

ts
import type {
    BotOptions,
    BotLaunchOptions,
    Middleware,
    NextFunction,
    SessionStore,
    RateLimitStore,
    UpdateDedupeStore,
} from 'vibegram';

Gunakan tipe ini saat menulis middleware, plugin, store, atau instance bot yang strongly typed.

Tipe Bot API 10.0

TipeDeskripsi
SentGuestMessageHasil dari answerGuestQuery.
BotAccessSettingsPengaturan akses managed bot.
LivePhotoObjek live photo di message.
InputMediaLivePhotoPayload input media live photo.
PollMediaMedia untuk poll dan explanation poll.
DeleteMessageReactionOptionsOpsi menghapus satu reaction message.
DeleteAllMessageReactionsOptionsOpsi menghapus reaction terbaru.
SendLivePhotoOptionsOpsi tambahan untuk sendLivePhoto.

Tipe Bot API 10.1

Rich Messages

TipeDeskripsi
RichMessagePesan rich (blocks + is_rtl opsional).
InputRichMessageRich message yang dikirim; pakai tepat satu dari html atau markdown.
InputRichMessageContentKonten rich message untuk hasil inline query.
RichTextString biasa, array RichText, atau elemen RichText*.
RichBlockUnion block rich seperti paragraph, heading, table, dan photo.
RichBlockCaptionCaption (text + credit opsional) untuk block media.
RichBlockTableCellSel pada RichBlockTable.
RichBlockListItemItem pada RichBlockList.

Tipe inline RichText* dan block RichBlock* diekspor satu per satu untuk typing yang presisi.

Join Request Queries dan Polls

TipeDeskripsi
ChatJoinRequestQueryResultHasil 'approve' | 'decline' | 'queue' untuk answerChatJoinRequestQuery.
LinkObjek HTTP link (url).
InputMediaLinkMedia link yang bisa dipakai sebagai media opsi poll.

Field baru pada tipe lama mencakup User.supports_join_request_queries, ChatFullInfo.guard_bot, ChatJoinRequest.query_id, dan Message.rich_message.

Interface Pagination

ts
import type { PaginationItem, PaginationOptions } from 'vibegram';

const item: PaginationItem = {
    text: 'Produk',
    callback_data: 'product:1',
};

PaginationOptions mengatur nomor halaman, ukuran halaman, callback data navigasi, pola label halaman opsional, dan kolom grid opsional.

Interface Session

ts
import type { SessionStore } from 'vibegram';

class RedisSessionStore implements SessionStore {
    async get(key: string) {
        const value = await redis.get(key);
        return value ? JSON.parse(value) : undefined;
    }

    async set(key: string, value: unknown) {
        await redis.set(key, JSON.stringify(value));
    }

    async delete(key: string) {
        await redis.del(key);
    }
}

Gunakan MemorySessionStore untuk storage in-memory lokal atau implementasikan SessionStore untuk Redis, SQL, atau store eksternal lain.

Session Bertipe

ts
type MySession = {
    count: number;
    language: string;
};

bot.use(
    session<MySession>({
        initial: () => ({ count: 0, language: 'id' }),
    })
);

Typing middleware session membuat ctx.session strongly typed di handler berikutnya.

Extending Context

ts
import type { Context } from 'vibegram';

interface AppContext extends Context<MySession> {
    user?: { id: string; role: 'admin' | 'member' };
}

const bot = new Bot<AppContext>(process.env.BOT_TOKEN!);

Gunakan tipe context kustom saat middleware menempelkan data aplikasi sendiri.

Tipe Error

ts
import {
    ConversationTimeoutError,
    InvalidTokenError,
    NetworkError,
    RateLimitError,
    TelegramApiError,
    VibeGramError,
    WebAppValidationError,
} from 'vibegram';

Catch subclass spesifik saat perilaku recovery berbeda per kategori error.

Released under the ISC License.