lavolab/telegram-api

一个完整的Telegram机器人API实现,使用PHP编写,支持内联机器人!

v1.0.1 2023-01-25 22:21 UTC

This package is auto-updated.

Last update: 2024-09-26 02:16:42 UTC


README

PHP 7 Telegram Bot API Library

Telegram API库

Latest Stable Version Total Downloads Build Status Scrutinizer Code Quality Code Coverage License

这是一个PHP7机器人API实现,实现了Bot API v4.7之前的所有功能。它没有实现的是Telegram Passport,这是在Bot API v4.0中引入的。由于它可能引入安全漏洞,因此不太可能实现。但是,如果您认为有充分的理由需要它,请随时告诉我。

关于此包

  • 使您能够通过PHP向Telegram用户(无论是直接对话、频道、群组还是超群)发送Telegram机器人API支持的所有内容:消息、贴纸、位置、内联机器人和任何其他支持的方法。
  • 尊重并实现了Telegram自己创建的默认类型和方法。对任何方法有疑问?请查看原始文档,此实现不会相差太远。
  • 不需要任何强制依赖项,除了ReactPHP,如果您已经在其他地方使用它,则可以将其注入。
  • 完全支持内联机器人。
  • 完全支持支付系统。

已知问题

Telegram

此库(目前)不包括的唯一内容是Passport支持。这是一个持续的开发项目,但最终发现工作量比最初想象的要多得多,因此如果有人想接手这个项目,请随时。

所有其他已知问题都可以在问题或拉取请求的形式中找到。发现了一个新问题?请随时提交PR创建问题!不确定是否找到了新问题?您始终可以在专用组中询问 :)

路线图

  • v4(尚未建立分支)将是下一个主要版本。更多信息
  • v3(master分支)是当前活动分支。
  • v2(v2分支)已弃用,那里将不再进行新工作。
  • v1已弃用,那里将不再进行新工作。
  • v0已弃用,那里将不再进行新工作。

安装

Total Downloads

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构造函数时更改了参数顺序
  • 自定义数组类型现在实现了IteratorAggregate(解决了#21问题!)

如果您需要从v2升级到v3,请检查以下Wiki页面:升级到v3

通用用法

基本用法示例

<?php

use \Lavolab\TelegramAPI\HttpClientRequestHandler;
use \Lavolab\TelegramAPI\TgLog;
use \Lavolab\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

我实际上并不使用Telegram。不,开玩笑的,我创建了一个群组,您可以通过https://t.me/PHPBotAPI与我联系。另一种与您联系的好方法是简单地创建问题拉取请求

与安全相关的错误

如果您能负责任地处理这些问题,我将不胜感激。如果您偶然发现与这个Telegram Bot API客户端相关的安全问题,请要求我私下联系您

特别感谢