williamson/laragram

Laravel 对 telegram-cli 的包装

v1.0.1 2016-05-31 22:13 UTC

This package is auto-updated.

Last update: 2024-09-19 05:13:27 UTC


README

此项目最初是从以下项目分叉的: php-telegram-cli-client,并感谢 zyberspace 提供了启动项目所需的工作。

1.0 版本的新特性是什么?

  • 为了使 Laravel 服务提供者 "deferred"(性能增强功能),您现在必须手动在 config/app.php 的别名部分中注册 TG 别名。

这是什么?

此项目允许您使用熟悉的 Laravel 语法,通过在服务器上运行的 telegram-cli,快速方便地通过 Telegram Messenger 发送消息/图片/文档/音频文件/位置。

它可以做到像

	TG::sendMessage('User_name', 'Hi there your account has been set up! Thanks!');

	TG::sendDocument('User_name', '/home/data/files/important.pdf');

	TG::sendImage('User_name', 'http://upload.wikimedia.org/wikipedia/commons/1/16/HDRI_Sample_Scene_Balls_(JPEG-HDR).jpg');

当然,如果您不喜欢使用 Facades,您也可以始终恢复到

	// $tg is an instantiated TgCommands Object. Laravel will create this out of the IOC container for
	// you if typehinted in constructor etc. 
	$tg->sendMessage('User_name', 'Hi there your account has been set up! Thanks!');

要求

  • 一个正在运行 telegram-cli,监听在 unix-socket(-S)或端口(-P)上。需要已经配置好(电话号码等)。
  • php >= 5.4.0
  • 安装了 curl
  • 在 telegram 守护进程启动命令中添加了 json 标志

安装 Telegram-cli

设置 telegram-cli

Telegram-cli 需要在一个 unix-socket(-S)或端口(-P)上运行,以便 laragram 可以连接到它。请阅读 telegram-cli 上的说明,了解如何 配置 并然后 make

如果构建成功,您就可以继续了!

第一次运行 telegram-cli

如果您之前从未启动过 telegram-cli,您需要首先以正常模式启动它,这样您就可以输入您的 telegram 电话号码并进行注册。

假设您在 ~/telegram 中安装了 telegram,您的命令应该是这样的: ~/telegram/bin/telegram-cli

注册后,您可以从 telegram-cli 中退出(safe_quit)并以守护进程方式启动它。

作为守护进程运行 telegram-cli

要作为守护进程运行 telegram-cli,您需要使用 -d 标志并设置一个 unix socket -S

~/telegram/bin/telegram-cli -k ~/telegram/tg-server.pub -dWS /tmp/tg.sck --json

或者,您也可以使用 TCP 端口

~/telegram/bin/telegram-cli -k ~/telegram/tg-server.pub -dWP 7777 --json

-W 开关表示在启动时加载联系人列表 - 这允许您立即发送消息。命令末尾的 & 表示该命令将在后台加载,让您继续执行脚本。

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

现在您已经有 Telegram-cli 在运行,并等待被告知要发送什么!

为了确保您的守护进程不会意外退出,您可以使用类似 supervisor 的工具来确保该进程始终在运行。请参阅下面的说明,了解如何设置。

安装 Laragram

使用 composer 安装 Laragram

在您的 Laravel 项目根目录中

composer require williamson/laragram

服务提供者和 Facades

打开 config/app.php 文件,找到 providers 数组,并将其添加到末尾

        'Williamson\Laragram\Laravel\LaragramServiceProvider'

如果您正在运行 Laravel 5.1 或更高版本,您可以在 config/app.php 文件中使用以下语法

        Williamson\Laragram\Laravel\LaragramServiceProvider::class

注意 Laravel 5 版本中没有单引号。

现在您将以下行添加到 config/app.php 中的 Alias 数组中,以注册简写 TG Facade

        'TG' => \Williamson\Laragram\Laravel\LaragramFacade::class,

打开 config/services.php 文件,添加以下数组以指定您想要连接到电报守护进程的套接字类型。

    'telegram' => [
        'socket' =>'tcp://127.0.0.1:7778'
    ]

其他值包括 Unix 套接字。例如 'socket' => 'unix:///tmp/tg.sck'

完成!

使用 Laragram

现在您可以在应用的任何位置快速轻松地发送电报消息,如下所示

   // routes.php

     Route::get('/test', function (){
          TG::sendMsg('<name or telegram id number>', 'Hello there!');
     });

请记住,名称应使用下划线而不是空格,例如 firstname_lastname,或者您可以使用 user#然后直接输入该人的电报 ID。这种方法更为可靠。例如 user#123456789

除了 sendMessage 外,您还可以使用以下命令

broadcastMsg
chatAddUser
chatCreateGroup
chatCreateSecret
chatDelUser
chatExportLink
chatInfo
chatRename
chatSetPhoto
contactAdd
contactDelete
contactList
contactRename
deleteMsg
exportCard
getContactList
getDialogList
getHistory
getUserInfo
markRead
msg
sendAudio
sendContact
sendDocument
sendLocation
sendMsg
sendPhoto
sendText
sendTypingStart
sendTypingStop
sendVideo
setProfileName
setProfilePhoto
setStatusOffline
setStatusOnline
setUsername

许可证

本软件根据 Mozilla 公共许可证 v. 2.0 许可。有关更多信息,请参阅 LICENSE 文件。

使用 Supervisor

假设您已经在系统上安装了

  • supervisord(如果没有,请访问 supervisord 安装)并且
  • 电报已安装于 /home/username/telegram

然后创建一个新的文件 /etc/supervisor/conf.d/telegram.conf

并将以下内容复制到其中,添加/替换您希望创建的任何日志文件

[program:telegram]
command=/bin/bash -c "rm -f /tmp/tg.sck && /home/username/telegram/bin/telegram-cli -k /home/username/telegram/tg-server.pub -dWS /tmp/tg.sck --json"
;For tcp socket this could be
;command=/bin/bash -c "/home/username/telegram/bin/telegram-cli -k /home/username/telegram/tg-server.pub -dWP 7777 --json"
directory=/home/username/telegram
redirect_stderr=true
stopsignal=KILL
stopasgroup=true
autostart=true
autorestart=true
startretries=3
user=<insert linux username>
stdout_logfile=<insert your own log folder and log filename. Must exist>
stderr_logfile=<insert your own log folder and log filename. Must exist>
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB

保存文件并重启 supervisor(确保在执行此操作之前电报-cli 没有运行,supervisor 将确保即使在崩溃的情况下进程也始终运行)。

sudo service supervisor restart

您可以使用监控程序 sudo supervisorctl 查看进程的状态