zyberspace/telegram-cli-client

此软件包已被废弃且不再维护。作者建议使用 irazasyed/telegram-bot-sdk 软件包。

telegram-cli 的 php 客户端

v0.4.1 2015-12-23 18:44 UTC

This package is auto-updated.

Last update: 2022-02-01 12:44:44 UTC


README

###更新 2015-12-23

由于我现在没有时间再继续维护这个项目,而且Telegram发布了它自己的机器人API,因此未来这个项目不会有太多更新。我会尽量解决所有目前开放的问题,以确保问题部分不再有任何内容(即使我需要用 wontfix 关闭一些问题)。
如果有人想接管这个项目,我愿意给他推送权限或将他的GitHub/Packagist分支链接。

如果您想将项目迁移到新的机器人API,请查看 非官方php-sdk

zyberspace/telegram-cli-client

用于 telegram-cli 的php客户端

Packagist Codacy License

需求

  • 一个运行中的 telegram-cli,监听在 unix-socket (-S) 或端口 (-P) 上,并返回所有答案作为 JSON (--json)。
    需要预先配置(电话号码等)。
  • php >= 5.3.0

使用方法

###配置 telegram-cli telegram-cli 需要在 unix-socket (-S) 或端口 (-P) 上运行,以便 telegram-cli-client 可以连接到它。所有答案都需要以 JSON 格式返回 (--json)。
您还应该用 -W 启动它,以便在启动时加载联系人列表。
在此示例中,我们将使用以下命令(从安装 telegram-cli 的目录中执行此命令,而不是从 php-client 中执行),-d 允许它作为守护进程运行。

./bin/telegram-cli --json -dWS /tmp/tg.sck &

如果您在运行 telegram-cli 的用户不同于您的 php 脚本,并且您使用的是 Linux,则需要更改套接字的权限,以便 php 脚本可以访问它(感谢 dennydai 提供此信息)!
例如,将两者添加到 telegram-group,然后执行以下操作:

chown :telegram /tmp/tg.sck
chmod g+rwx /tmp/tg.sck

如果您之前从未启动过 telegram-cli,则需要首先以正常模式启动它,以便您可以输入您的 Telegram 电话号码并进行注册(如果需要的话,./bin/telegram-cli)。

要停止守护进程,请使用 killall telegram-clikill -TERM [telegram-pid]

###使用 composer 安装 telegram-cli-client 在您的项目根目录下

composer require --update-no-dev zyberspace/telegram-cli-client

Composer 将自动将此软件包添加到您的项目需求中,并安装它(如果您还没有的话,也会创建 composer.json)。
如果您想使用 discovery-shell,请从命令中删除 --update-no-dev

###使用它

require('vendor/autoload.php');
$telegram = new \Zyberspace\Telegram\Cli\Client('unix:///tmp/tg.sck');

$contactList = $telegram->getContactList();
$telegram->msg($contactList[0]->print_name, 'Hey man, what\'s up? :D');

###使用 discovery-shell 使用它 A 真正简单的方式学习 API 是通过使用嵌入的 discover-shell。您需要安装开发依赖项才能使用此功能(composer update --dev)。

$ ./discovery-shell.php
-- discovery-shell to help discover a class or library --

Use TAB for autocompletion and your arrow-keys to navigate through your method-history.
Beware! This is not a full-featured php-shell. The input gets parsed with PHP-Parser to avoid the usage of
eval().
> $telegram->getContactList();
array(13) {
  [...]
}
> $telegram->msg('my_contact', 'Hi, i am sending this from a php-client for telegram-cli.');
true

文档

要创建文档,只需在项目根目录中运行 phpdoc
在线版本可在 phpdoc.zyberware.org/zyberspace/telegram-cli-client 查找。

支持的命令

您可以使用 RawClient 类的 exec() 方法执行每个命令,但也提供了一些命令包装器(文档链接),您应该优先使用(参见 example.php)。
如果您只想使用自己的命令包装器,只需扩展 RawClient 类(负责套接字连接并提供一些辅助方法)。

在您的命令包装器中或直接使用 exec() 时,请不要忘记使用 escapePeer() 对联系人、聊天名称等实体进行转义,并使用 escapeStringArgument() 对所有字符串参数进行转义,以避免错误。

API 稳定性

命令包装器的 API 一定会在未来发生变化,例如,当前 getHistory() 只返回 telegram-cli 的原始答案,并不太有用。因此,您不应在生产环境中使用此功能。

如果您仍然想在项目中使用此功能,请确保您保持相同的次要版本(例如,~0.1.00.1.*)。.

许可

本软件根据 Mozilla Public License v. 2.0 许可。更多信息,请参阅文件 LICENSE