{"id":31126617,"url":"https://github.com/httd1/telegramphp","last_synced_at":"2025-09-17T22:58:48.336Z","repository":{"id":139625981,"uuid":"540659499","full_name":"httd1/TelegramPhp","owner":"httd1","description":"Esse é um pacote em PHP para uso da API de bots do Telegram.","archived":false,"fork":false,"pushed_at":"2025-07-09T23:05:11.000Z","size":59,"stargazers_count":10,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-16T13:06:43.666Z","etag":null,"topics":["api","bot","php","php-telegram-bot","php7","telegram"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/httd1.png","metadata":{"files":{"readme":"README-pt.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-09-24T00:24:02.000Z","updated_at":"2025-07-09T23:05:14.000Z","dependencies_parsed_at":"2023-12-17T13:26:08.511Z","dependency_job_id":"8c5a2f87-244c-4c97-8629-7b0a4f1c1562","html_url":"https://github.com/httd1/TelegramPhp","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/httd1/TelegramPhp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/httd1%2FTelegramPhp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/httd1%2FTelegramPhp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/httd1%2FTelegramPhp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/httd1%2FTelegramPhp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/httd1","download_url":"https://codeload.github.com/httd1/TelegramPhp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/httd1%2FTelegramPhp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275680446,"owners_count":25508570,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-17T02:00:09.119Z","response_time":84,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","bot","php","php-telegram-bot","php7","telegram"],"created_at":"2025-09-17T22:58:42.919Z","updated_at":"2025-09-17T22:58:48.327Z","avatar_url":"https://github.com/httd1.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TelegramPhp\n\n[![GitHub license](https://img.shields.io/github/license/httd1/TelegramPhp)](https://github.com/httd1/TelegramPhp/blob/main/LICENSE) [![GitHub stars](https://img.shields.io/github/stars/httd1/TelegramPhp)](https://github.com/httd1/TelegramPhp/stargazers)\n\nEsse é um pacote em PHP para uso da API de bots do Telegram.  \nEsse pacote foi pensado para uso exclusivamente por [Webhook](https://core.telegram.org/bots/api#setwebhook), \nantes do uso leia a documentação completa do Telegram aqui https://core.telegram.org/bots/api\n\n\n## Requisitos\n\n- PHP\u003e=7.0\n  - cURL\n  - JSON\n\n## Instalação\n\n```shell\ncomposer require httd1/TelegramPhp\n```\n\n## Uso:\n\n```php\n\u003c?php\n\ninclude __DIR__.'/vendor/autoload.php';\n\nuse \\TelegramPhp\\TelegramPhp;\nuse \\TelegramPhp\\Methods;\nuse \\TelegramPhp\\Buttons;\n\n// set bot token\n\\TelegramPhp\\Config\\Token::setToken ('110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw');\n\n$tlg = new TelegramPhp;\n\n$tlg-\u003ecommand ('/start', function ($bot){\n\n  // send message\n  Methods::sendMessage ([\n    'chat_id' =\u003e $bot-\u003egetChatId (),\n    'text' =\u003e 'Hello 👋'\n  ]);\n\n});\n\n// Passing parameters to a command with {{info}}\n$tlg-\u003ecommand ('/get {{info}}', function ($bot, $data){\n\n  switch ($data ['info']){\n    case 'id':\n      $user_info = $bot-\u003egetUserId ();\n      break;\n    case 'username':\n      $user_info = $bot-\u003egetUsername ();\n      break;\n    case 'name':\n      $user_info = $bot-\u003egetFullName ();\n      break;\n    default:\n      $user_info = \"Use \u003ccode\u003e/get id or username or name\u003c/code\u003e\";\n  }\n\n  Methods::sendMessage ([\n    'chat_id' =\u003e $bot-\u003egetChatId (),\n    'text' =\u003e \"User Info: \u003cb\u003e{$user_info}\u003c/b\u003e\",\n    'parse_mode' =\u003e 'html',\n    'reply_markup' =\u003e Buttons::inlineKeyBoard ([\n      [Buttons::inlineKeyBoardUrl (\"Link My Profile\", \"tg://user?id=\".$bot-\u003egetUserId ())],\n      [Buttons::inlineKeyBoardCallbackData (\"Ok, Thanks 👍\", \"/ok\")]\n    ])\n  ]);\n\n});\n\n// match pattern\n$tlg-\u003ecommandMatch ('/^\\/ok$/', function ($bot){\n\n  Methods::answerCallbackQuery ([\n    'callback_query_id' =\u003e $bot-\u003egetCallbackQueryId (),\n    'text' =\u003e '💪 Bro'\n  ]);\n\n});\n\n// commandDefault aways in the end of code!\n$tlg-\u003ecommandDefault (function ($bot){\n\n  Methods::sendMessage ([\n    'chat_id' =\u003e $bot-\u003egetChatId (),\n    'text' =\u003e 'Chose a command /start, /info with id, name or username'\n  ]);\n\n});\n```\n\n## 🔒 Segurança\nO Telegram oferece algumas formas de validar se o request recebido veio realmente de seus servidores ([mais aqui](https://core.telegram.org/bots/api#setwebhook)), você pode definir um ```secret_token``` no seu Webhook, todas as requisições terá seu token secreto no header _X-Telegram-Bot-Api-Secret-Token_, usando esse pacote você também pode validar o seu ```secret_token```.\n\n```php\n\n$secret_token = 'wubbalubbadub_dub';\n\n// set secret_token in webhook\n// Methods::setWebhook ([\n//   'url' =\u003e 'https://url.com/mybot/',\n//   'secret_token' =\u003e $secret_token\n// ]);\n\n// my secret token\n$tlg-\u003esetSecretToken ($secret_token);\n\nif ($tlg-\u003echeckSecretToken () == false){\n    http_response_code (401);\n}\n\n```\n\n## Respondendo comandos\nUse os métodos ```command ()```, ```commandMatch ()``` ou ```commandDefault``` para capturar comandos enviados ao bot, uma funcão de callback ou um método de uma classe será executado para esse comando.\n\n- ```command ()``` - Para comandos padrão _/comando_ ou qualquer string simples que você considera um comando, um '👍' por exemplo! Usando ```{{param}}``` você pode nomear parâmetros que espera receber no comando.\n\n```php\n$tlg-\u003ecommand ('👍', function ($bot){\n\n  // process command...\n\n});\n\n$tlg-\u003ecommand ('/colors {{color_1}} {{color_2}} {{color_3}}', function ($bot, $data){\n\n  // $data ['color_1']...\n  // process command...\n\n});\n\n// run the colors method of ClassBot class\n// $tlg-\u003ecommand ('/colors {{color_1}} {{color_2}} {{color_3}}', 'ClassBot:methodColors');\n\n// for namespace use '\\MyNamespace\\ClassBot:colors'\n// $tlg-\u003ecommand ('/colors {{color_1}} {{color_2}} {{color_3}}', '\\MyNamespace\\ClassBot:colors');\n```\n\n- ```commandMatch ()``` - Para comandos que seguem um padrão diferente, comandos que casam com uma expresão regular expecifica, [urls do telegram](https://regex101.com/r/Ddqz3q/1) por exemplo!\n\n```php\n// telegram urls https://t.me/botfather, https://t.me/TelegramBR\n$tlg-\u003ecommandMatch ('/^https?:\\/\\/t\\.me\\/\\w{5,}$/', function ($bot, $data){\n\n  // $data [0]\n  // process command...\n\n});\n\n// run the executeLinks method of TelegramBot class\n// $tlg-\u003ecommandMatch ('/^https?:\\/\\/t\\.me\\/\\w{5,}$/', 'TelegramBot:executeLinks');\n\n// for namespace use '\\MyNamespace\\ClassBot:colors'\n// $tlg-\u003ecommandMatch ('/^https?:\\/\\/t\\.me\\/\\w{5,}$/', '\\MyNamespace\\TelegramBot:executeLinks');\n```\n\n- ```commandDefault ()``` - Comando executado por padrão quando não existe nehuma correspondência com _command_ ou _commandMatch_.\n  \n```php\n\n// ...command\n// ...commandMatch\n\n// in the end of code!\n$tlg-\u003ecommandDefault (function ($bot){\n  \n  // send default message\n\n});\n\n// $tlg-\u003ecommandDefault ('ControllerBot:default');\n\n\n```\n\n## Alguns dos métodos disponíveis:\n\n``` getText ()```, ``` getUpdateType ()```, ``` getContent ()```, ``` getUserId ()```, ``` getUsername ()```, ``` getFirstName ()```, ``` getLastName ()```, ``` getFullName ()``` - Nome completo do usuário; ``` getLanguageCode ()``` - [ID de idioma do usuário](https://en.wikipedia.org/wiki/IETF_language_tag); ``` getMessageId ()```, ``` getChatId ()```, ``` getMediaType ()``` - Tipo de mídia, _photo, animation, audio, document, sticker, story, video, video_note, voice, contact, dice, game, poll, venue, location, invoice_; ``` getCallbackQueryId ()```, ``` getChatType ()``` - Tipo de chat, _private, group, supergroup, channel_; ``` saveFile ()``` - Download de um arquivo, recebe como parâmetro o retorno do método ```getFile ()``` e o destino do arquivo; ```setSecretToken ()``` - Define um token de segurança usado em requisições Webhook(_secret_token_); ```checkSecretToken ()``` - Verifica _secret_token_ definido com secret token da requisição.\n\n## Métodos e Botões:\n\nComo já viu em exemplos acima ☝ na classe estática ```Methods``` estão disponíveis todos os métodos da api do Telegram, [lista completa aqui](https://core.telegram.org/bots/api#available-methods), temos outra classe estática ```Buttons``` para criação de botões inline(embutido na mensagem) e botões de teclado.\n\n![](https://i.imgur.com/0ArtHn9.jpg)\n\n```php\nMethods::sendMessage ([\n  'chat_id' =\u003e $bot-\u003egetUserId (),\n  'text' =\u003e '(☞ﾟヮﾟ)☞',\n  'reply_markup' =\u003e Buttons::inlineKeyBoard ([\n    [Buttons::inlineKeyBoardCallbackData ('Hello', '/hello')],\n    // [Buttons::inlineKeyBoardUrl ('Open Link', 'https://google.com')]\n  ])\n]);\n```\n\n```inlineKeyBoardUrl ()```, ```inlineKeyBoardCallbackData ()```, ```inlineKeyBoardWebApp ()```, ```inlineKeyBoardLoginUrl ()```, ```inlineKeyBoardSwitchInlineQuery ()```,```inlineKeyBoardSwitchInlineQueryCurrentChat ()```, ```inlineKeyBoardPay ()```, ```inlineKeyBoardCopyText```, ```inlineKeyBoardSwitchInlineQueryChosenChat```\n\n![](https://i.imgur.com/a0NxbBK.jpg)\n\n```php\nMethods::sendMessage ([\n  'chat_id' =\u003e $bot-\u003egetUserId (),\n  'text' =\u003e 'Hello 👋',\n  'reply_markup' =\u003e Buttons::replyKeyBoardMarkup ([\n    [Buttons::keyBoardButtonText ('Hello')],\n    // [Buttons::keyBoardButtonRequestContact ('share your contact')]\n  ])\n]);\n```\n\n```keyBoardButtonText ()```, ```keyBoardButtonRequestContact ()```, ```keyBoardButtonRequestLocation ()```, ```keyBoardButtonRequestPoll ()```, ```keyBoardButtonWebApp ()```\n\n\n![](https://i.imgur.com/6pL7QFe.jpg)\n\n```php\nMethods::sendMessage ([\n  'chat_id' =\u003e $bot-\u003egetChatId (),\n  'text' =\u003e '😍🤔👌🔥🤦',\n  'reply_markup' =\u003e Buttons::forceReply ()\n]);\n```\n\n- ```forceReply ()``` - Força uma resposta da mensagem, [documentação](https://core.telegram.org/bots/api#forcereply)\n\n- ```replyKeyboardRemove ()``` - Remove o teclado personalizado e mostra o teclado padrão do dispositivo, [documentação](https://core.telegram.org/bots/api#replykeyboardremove)\n\n## Reação a mensagens\nBots podem reagir às mensagens por emojis personalizados ou emojis simples como 👍, 👌, 🔥, 😍...  \n[Você pode ver lista completa de reações disponíveis aqui](https://core.telegram.org/bots/api#reactiontypeemoji)  \nTemos uma classe estática ```Reaction``` para reagir a mensagens.\n\n- Reagindo com ❤  \n![Reagindo com ❤](https://i.imgur.com/I1GVoxF.jpg)\n```php\nMethods::setMessageReaction ([\n  'chat_id' =\u003e $bot-\u003egetChatId (),\n  'message_id' =\u003e $bot-\u003egetMessageId (),\n  'reaction' =\u003e Reaction::reactionType ([\n      Reaction::reactionTypeEmoji ('❤'),\n  ])\n]);\n```\n\n- Reagindo com emoji personalizado ![5445284980978621387](https://i.imgur.com/3RwZ5oW.gif)  \n![Reagindo com emoji personalizado](https://i.imgur.com/Vz5Eqhh.jpg)\n```php\nMethods::setMessageReaction ([\n  'chat_id' =\u003e $bot-\u003egetChatId (),\n  'message_id' =\u003e $bot-\u003egetMessageId (),\n  'reaction' =\u003e Reaction::reactionType ([\n      Reaction::reactionTypeCustomEmoji ('5445284980978621387'),\n  ])\n]);\n```\n\n## Enviando arquivos:\n\n- Enviando audio\n\n```php\nMethods::sendAudio ([\n  'chat_id' =\u003e $bot-\u003egetChatId (),\n  'audio' =\u003e curl_file_create (__DIR__.'/music.mp3'),\n  'caption' =\u003e 'Description music'\n]);\n```\n\n- Enviando foto\n\n```php\nMethods::sendPhoto ([\n  'chat_id' =\u003e $bot-\u003egetChatId (),\n  'photo' =\u003e curl_file_create (__DIR__.'/photo.jpg'),\n  'caption' =\u003e 'Description photo'\n]);\n```\n\n- Enviando vídeo\n\n```php\nMethods::sendVideo ([\n  'chat_id' =\u003e $bot-\u003egetChatId (),\n  'video' =\u003e curl_file_create (__DIR__.'/video.mp4'),\n  'caption' =\u003e 'Description video'\n]);\n```\n\n- Enviando arquivo\n\n```php\nMethods::sendDocument ([\n  'chat_id' =\u003e $bot-\u003egetChatId (),\n  'document' =\u003e curl_file_create (__DIR__.'/application.apk'),\n  'caption' =\u003e 'Description file'\n]);\n```\n\n## Download de arquivos\n\n```php\n\n$file = Methods::getFile ([\n  'file_id' =\u003e 'CQACAgEAAxkBAAIBRGMFiJ_7zH2y9lJZxnn-XesvrBIhAALrAgACBcf5R68w-Z9ZMsgUKQQ'\n]);\n\nvar_dump ($bot-\u003esaveFile ($file, __DIR__.'/music.mp3'));\n```\n\n## Logs\nVocê pode obter logs de interação com o bot, basta usar a classe estática ```\\TelegramPhp\\Config\\Logs```, por ela você pode definir uma ou mais classes que irão receber e processar os dados de interação do usuário.\n\n- Classe responsável por processar os logs.\n```php\nclass LogCommands {\n  // method log is required\n  public function log ($telegramPhp, $action, $route, $data){\n    // process data\n  }\n}\n```\n\n- Definindo a classe que irá processar os logs.\n```php\n\\TelegramPhp\\Config\\Logs::catchLogs ([\n  LogCommands::class,\n  // LogStatistics::class\n]);\n```\n\n## Tipo de Update\nÉ possível executar uma função/método para um tipo de [Update](https://core.telegram.org/bots/api#update) expecífico enviado pelo Telegram, por exemplo você pode executar uma função que responda a updates do tipo '_my_chat_member_' ou '_chat_member_'.\n\n- Processando updates '_my_chat_member_'\n```php\n$tlg-\u003eon ('my_chat_member', function ($bot){\n  // code here\n});\n// $tlg-\u003eon (['message_reaction', 'message'], function ($bot){\n  // code here\n// });\n```\n- Processando updates '_chat_member_'\n```php\n$tlg-\u003eon ('chat_member', 'TelegramBot:myChatMember');\n```\n\n### 🔥 [Envie os bots feitos com esse pacote](https://t.me/httd1), ele pode ser listado aqui!\n• J.M  \n- [@scdownbot](https://t.me/scdownbot) (+18K Usuários)\n- [@twitterdlrobot](https://t.me/twitterdlrobot) (+11K Usuários)\n- [@rastreiorobot](https://t.me/rastreiorobot) (+14K Usuários)\n- [@btn_bot](https://t.me/btn_bot) (+200 Usuários)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhttd1%2Ftelegramphp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhttd1%2Ftelegramphp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhttd1%2Ftelegramphp/lists"}