unreal4u / telegram-api
用PHP编写的完整的Telegram机器人API实现,支持内联机器人!
Requires
- php: >=7.1
- ext-json: *
- amphp/artax: ^3
- clue/block-react: ^1.3
- lucadevelop/telegram-entities-decoder: ^1.2.1
- react/http: ^1.1
- react/promise: ^2.7
- unreal4u/dummy-logger: ^1.0
- yoshi2889/multipart-builder: ^0.1.1
Requires (Dev)
- monolog/monolog: ^1.17
- phpunit/php-code-coverage: ^10.0
- phpunit/phpunit: ^10.0
- squizlabs/php_codesniffer: ^3.7
- dev-master
- v3.x-dev
- v3.8.0
- v3.7.0
- v3.6.0
- v3.5.0
- v3.4.3
- v3.4.2
- v3.4.1
- v3.4.0
- v3.3.6
- v3.3.5
- v3.3.4
- v3.3.3
- v3.3.2
- v3.3.1
- v3.3.0
- v3.2.0
- v3.1.1
- v3.1.0
- v3.0.0
- v3.0.0-alpha
- v2.x-dev
- v2.10.1
- v2.10.0
- v2.9.6
- v2.9.5
- v2.9.4
- v2.9.2
- v2.9.1
- v2.9.0
- v2.8.0
- v2.7.0
- v2.6.0
- v2.5.0
- v2.4.4
- v2.4.3
- v2.4.2
- v2.4.1
- v2.4.0
- v2.3.1
- v2.3.0
- v2.3.0-alpha
- v2.2.1
- v2.2.0
- v2.1.1
- v2.1.0
- v2.0.0
- v2.0.0-rc.1
- v2.0.0-alpha
- v1.2.3
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.1
- v1.1.0
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- v1.0.0-alpha
- v0.1.0
- v0.0.6
- dev-dependabot/composer/react/http-1.9.0
- dev-paymentsImplementation
- dev-gamingPlatform
- dev-errorHandler
- dev-BotAPI-v2.3
- dev-api-bots-v2
- dev-loggerIntegration
- dev-inlineBots
This package is auto-updated.
Last update: 2024-09-11 16:41:31 UTC
README
Telegram API库
这是一个PHP7机器人API实现,实现了直到v4.7的机器人API的大部分功能。它没有实现的是Telegram Passport,这是在机器人API v4.0中引入的。由于它可能引入安全漏洞,因此不太可能实现。然而,如果您认为有充分的理由需要它,请随时告诉我。
关于此包
- 使您能够通过PHP向Telegram用户(无论是直接对话、频道、群组还是超群)发送由Telegram机器人API支持的所有内容:消息、贴纸、位置、内联机器人以及任何其他支持的方法。
- 尊重并实现了Telegram自己创建的默认类型和方法。对任何方法有疑问?请查看原始文档,此实现不会相差太多。
- 不需要任何强制性依赖项,除了ReactPHP,如果您已经在其他地方使用它,则可以将其注入。
- 全面支持内联机器人。
- 全面支持支付系统。
已知错误
此库(目前)不包括的是Passport支持。这是一个正在进行中的开发项目,但最终发现它的工作量比最初想象的要多得多,因此如果有人想接管这个项目...请随意!
所有其他已知的错误都可以以问题或拉取请求的形式找到。发现了新的错误?请随时提交PR或创建问题!不确定是否发现了新的错误?您始终可以在特殊群组中询问 :)
路线图
- v4(尚未建立分支)将是下一个主要版本。更多信息。
- v3(master分支)是当前活跃分支。
- v2(v2分支)已弃用,不会再在此处进行新工作。
- v1已弃用,不会再在此处进行新工作。
- v0已弃用,不会再在此处进行新工作。
安装
Composer是PHP中的一种依赖项管理工具。它允许您声明项目所依赖的库,并且它会为您管理(安装/更新)它们。阅读此处的安装说明。
首选(也是目前唯一)的安装方法是Composer,因此请在您的composer.json中添加以下内容
{ "require": { "unreal4u/telegram-api": "~3.4" } }
如果您不熟悉它,我建议您阅读位于此处的基本使用手册。
对俄罗斯用户的提示
为了使用代理,您可以使用https://github.com/clue/php-socks-react包,并将以下选项传递给Client
<?php use Clue\React\Socks\Client; $loop = Factory::create(); // Replace PROXY_ADDRESS and PROXY_PORT with the correct configuration $proxy = new Client('socks5://' . PROXY_ADDRESS . ':' . PROXY_PORT, new Connector($loop)); $handler = new HttpClientRequestHandler($loop, [ 'tcp' => $proxy, 'timeout' => 3.0, 'dns' => false ]); $this->tgLog = new TgLog(BOT_TOKEN, $handler); // The rest is exactly the same as it normally is, see the examples folder for more information
通过这些简单的步骤,您可以在瞬间配置代理!
将v2.x升级到v3
有很多向后不兼容的更改,但简而言之
- ReactPHP是新的Guzzle(异步请求!)
- 在调用
TgLog
构造函数时改变了参数顺序 - 自定义-Array类型现在实现了IteratorAggregate(解决了#21!)
如果您必须从v2升级到v3,请查看以下Wiki页面:升级指南。
通用用法
基本用法示例
<?php use \unreal4u\TelegramAPI\HttpClientRequestHandler; use \unreal4u\TelegramAPI\TgLog; use \unreal4u\TelegramAPI\Telegram\Methods\SendMessage; $loop = \React\EventLoop\Factory::create(); $handler = new HttpClientRequestHandler($loop); $tgLog = new TgLog(BOT_TOKEN, $handler); $sendMessage = new SendMessage(); $sendMessage->chat_id = A_USER_CHAT_ID; $sendMessage->text = 'Hello world!'; $tgLog->performApiRequest($sendMessage); $loop->run();
(旁注:如果上述代码中无法解析React\EventLoop\Factory
,请将include('vendor/autoload.php')
添加到您的PHP文件中。)
使用SendMessage()
对象,您可以通过TgLog对象创建要发送的消息。
所有其他功能都是基于此行为,因此每个其他方法都非常相似:您实例化一个对象,将对象传递给TelegramLog->performApiRequest(),这将返回一个Promise。如果方法返回回复,请传递回调给其onFulfilled
参数,您将以对象形式获得原始Telegram响应。不同的方法返回不同的对象类型。
请参阅示例目录以查看实现的一些方法的示例,包括内联机器人。
有关在生产环境中实际运行的代码示例,请参阅我的另一个存储库:https://github.com/unreal4u/telegram-bots
通过Webhook获取更新
有关更多关于此的信息,请参阅以下Wiki部分:通过Webhook获取更新。
内联机器人
请查看有关内联机器人的特殊Wiki页面:内联机器人。
额外要求
如果您想使用此包,您需要一个机器人API密钥。有关此方面的更多说明,请参阅以下文档:创建机器人。
启动一切
使用Telegram API执行操作时最困难的事情是获取chat_id,这是机器人实际对话的窗口。您可以通过执行GetUpdates()方法来获取此chatId。请注意,这里有一些注意事项,因此您可能最好使用SetWebhook()方法。
开发
语义版本
我将尽力遵守语义版本。
话虽如此,第一个稳定版本是v1.0.0,从那时起,除非我们更新主版本,否则不会发生重大BC更改。
想要合作吗?
合作非常欢迎!请查看以下Wiki页面以获取使开发更容易的信息:合作意愿。
联系作者
实际上,我并不使用Telegram。不,开玩笑的,我创建了一个群组,您可以在其中通过https://t.me/PHPBotAPI联系我。另一种联系的好方法是简单地创建问题或拉取请求!
与安全相关的错误
如果您能负责任地处理这些,我将不胜感激。如果您发现与这个Telegram Bot API客户端相关的安全问题,请要求我私下联系您在此处。
特别感谢
- 👍 特别感谢 NanoSector 使整个API异步化变得可能!
- 👍 感谢 Intensify 报告了 此致命错误。
- 👍 所有那些为 问题 和 拉取请求 做出贡献的惊人人物!