UNPKG

@botocrat/telegram

Version:

Simple, light-weight Telegram Bot Client for Node.js.

122 lines (117 loc) 4.95 kB
import { JSON } from '..' import { ITUser } from '../user' import { ITMessage } from '../message' import { ITLocationBasic, TTAttachment, ITChatPhoto } from '../objects' import { ITChatMember, ITChatMemberAdministrator, ITChatMemberOwner } from './chat_member' export * from './chat_member' export enum ETChatType { Private = 'private', Group = 'group', SuperGroup = 'supergroup', Channel = 'channel' } export interface ITChat { id: number type: ETChatType title: string username?: string first_name?: string last_name?: string } export interface ITChatDetailed extends ITChat { photo?: ITChatPhoto bio?: string has_private_forwards?: boolean description?: string invite_link?: string pinned_message?: ITMessage permissions?: ITChatPermissions slow_mode_delay?: number message_auto_delete_time?: number has_protected_content?: boolean sticker_set_name?: string can_set_sticker_set?: boolean linked_chat_id?: number location?: ITChatLocation } export type ITChatAdministrators = [ITChatMemberOwner, ...ITChatMemberAdministrator[]] export interface ITChatPermissions { can_send_messages?: boolean can_send_media_messages?: boolean can_send_polls?: boolean can_send_other_messages?: boolean can_add_web_page_previews?: boolean can_change_info?: boolean can_invite_users?: boolean can_pin_messages?: boolean } interface ITChatInviteLinkOptionals { name?: string expire_date?: number member_limit?: number creates_join_request?: boolean } export interface ITChatInviteLink extends ITChatInviteLinkOptionals { invite_link: string creator: ITUser is_primary: boolean is_revoked: boolean pending_join_request_count?: number } export type TTChatIdType = number | string // number: chat id, string: username export interface ITChatId { chat_id: TTChatIdType } export interface ITUserId extends ITChatId { user_id: number } export enum ETChatActionType { Message = 'typing', Photo ='upload_photo', Document = 'upload_document', Voice = 'upload_voice', VoiceNote = 'upload_voice_note', Video = 'record_video', Location = 'find_location', Sticker = 'choose_sticker' } export interface ITChatJoinRequest { chat: ITChat // Chat to which the request was sent from: ITUser // User that sent the join request date: number // Date the request was sent in Unix time bio?: string // Bio of the user. invite_link?: ITChatInviteLink // Chat invite link that was used by the user to send the join request } export interface ITChatLocation { location: ITLocationBasic address: string } export interface ITChatMethods { sendChatAction: (params: ITChatId & {action: ETChatActionType}) => Promise<boolean> banChatMember: (params: ITUserId & { only_if_banned?: boolean, until_date?: number, revoke_messages?: boolean }) => Promise<boolean> unbanChatMember: (params: ITUserId & { only_if_banned?: boolean }) => Promise<boolean> restrictChatMember: (params: ITUserId & { permissions: JSON<ITChatPermissions>, until_date?: number }) => Promise<boolean> promoteChatMember: (params: ITUserId & ITChatId & Omit<ITChatMemberAdministrator, "status"| "can_be_edited">) => Promise<boolean> setChatAdministratorCustomTitle: (params: ITUserId & { custom_title: string }) => Promise<boolean> banChatSenderChat: (params: ITChatId & {sender_chat_id: number}) => Promise<boolean> unbanChatSenderChat: (params: ITChatId & {sender_chat_id: number}) => Promise<boolean> setChatPermissions: (params: ITChatId&{permissions: JSON<ITChatPermissions>}) => Promise<boolean> exportChatInviteLink: (params: ITChatId) => Promise<string> createChatInviteLink: (params: ITChatId & ITChatInviteLinkOptionals) => Promise<ITChatInviteLink> editChatInviteLink:(params:ITChatId & {invite_link: string} & ITChatInviteLinkOptionals) => Promise<ITChatInviteLink> revokeChatInviteLink:(params:ITChatId & {invite_link: string}) => Promise<ITChatInviteLink> setChatPhoto: (params: ITChatId & {photo: TTAttachment}) => Promise<boolean> deleteChatPhoto: (params: ITChatId) => Promise<boolean> setChatTitle: (params: ITChatId & {title: string }) => Promise<boolean> setChatDescription: (params: ITChatId & { description: string }) => Promise<boolean> pinChatMessage: (params: ITChatId & {message_id:number,disable_notification?: boolean}) => Promise<boolean> unpinChatMessage: (params: ITChatId & {message_id?:number}) => Promise<boolean> unpinAllChatMessages: (params: ITChatId) => Promise<boolean> leaveChat: (params: ITChatId) => Promise<boolean> getChat: (params: ITChatId) => Promise<ITChatDetailed> getChatAdministrators: (params: ITChatId) => Promise<ITChatAdministrators> getChatMemberCount: (params: ITChatId) => Promise<number> getChatMember: (params: ITUserId) => Promise<ITChatMember> setChatStickerSet: (params: ITChatId & {sticker_set_name: string}) => Promise<boolean> deleteChatStickerSet: (params: ITChatId) => Promise<boolean> }