naftali100 / async_bot
异步电报机器人库
Requires
- amphp/amp: ^2.6.2
- amphp/cluster: ^1.0.1
- amphp/file: ^2.0.4
- amphp/http: ^1.6.3
- amphp/http-client: ^4.6.2
- amphp/http-server: ^2.1.7
- amphp/http-server-router: ^1.0
- amphp/http-server-static-content: ^1.0
- amphp/log: ^1.1
- respect/validation: ^2.2
Requires (Dev)
- amphp/phpunit-util: ^2.0
- phpunit/phpunit: ^9.5.24
- dev-master
- v3.x-dev
- v2.1.8
- v2.1.7
- v2.1.6
- v2.1.5.2
- v2.1.5.1
- v2.1.5
- v2.1.4
- v2.1.3
- v2.1.2
- v2.1.1
- v2.1
- v2.0.8
- v2.0.7
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0
- v1.5.3
- v1.5.2
- v1.5.1
- v1.5
- v1.4.18
- v1.4.17
- v1.4.16
- v1.4.15
- v1.4.14
- v1.4.13
- v1.4.12
- v1.4.11
- v1.4.10
- v1.4.9
- v1.4.8
- v1.4.7
- v1.4.6.3
- v1.4.6.2
- v1.4.6.1
- v1.4.6
- v1.4.5.1
- v1.4.5
- v1.4.4
- v1.4.3
- v1.4.2
- v1.4.1
- v1.4
- v1.3
- v1.1
- v1.0
This package is auto-updated.
Last update: 2024-09-10 18:40:47 UTC
README
simple flexible and async library based on amphp for telegram bot api.
注意:这是一个旧项目,编写得很差。我不推荐使用它。
安装
- 运行
composer require naftali100/async_bot
。
入门
server.php
require_once './vendor/autoload.php'; use bot_lib\Server; $server = new Server("127.0.0.1:8080"); // create server instance listening to port 8080 $server->load_file("bot.php"); // load the handlers in "bot.php" and store them in "bot.php" path $server->load_file("bot1.php", "index"); // you can add second param for different path $server->load_folder("folder", true); // load all files in a folder. the second param is whether to load recursively or not $server->run();
bot.php
require_once './vendor/autoload.php'; use bot_lib\Config; use bot_lib\Handler; use bot_lib\Update; use bot_lib\Filter; $config = new Config; $config->load("conf.json"); // can store token $config->server_url = "http://loadlhost:8081/bot"; // if you using local telegram-bot-api $handler = new Handler; $handler->on_message( fn(Update $u) => $u->reply("hello"), Filter::Message('/start') );
将 webhook 设置为 127.0.0.1:8080/you_bot_file_name.php(或通过传递给 load_file 的第二个参数的自定义名称)。
你可以在 webhook URL 中添加 token
参数,服务器将设置此参数并使用此 token。
运行 php server.php
。
examples 文件夹中有更多处理程序、配置和服务器选项。
说明
库中有 5 个主要对象
- Server: 扩展 Loader。加载文件,运行 http-server 并激活处理程序。
- Config: 配置。
- Update: 扩展 API 和 HTTP。包含发送请求到机器人 API 的所有方法。
- Handler: 创建将异步运行的处理程序。
- Filter: 创建过滤器的静态方法。
Server
服务器加载所有您的机器人文件,获取处理程序,并运行一个服务器监听传入的请求。一旦服务器收到请求,它就会激活在请求路径中设置的处理程序。您可以将任何请求路径设置为任何文件。
Handler
所有处理程序都在每个来自机器人的请求上异步运行。您可以根据需要设置各种处理程序并控制它们激活的方式。
要创建处理程序,只需调用 Handler 实例上的方法,方法名即为您想要的处理程序名 $handler->handler_name()
。
您可以给它任何名称(除处理程序类方法外)。名称可以控制处理程序的激活时间。
处理程序接受 4 个参数
- function (命名函数): 激活处理程序时运行的函数。接受 Update 实例作为参数。
- filter: 必须是可调用的。如果您传递了一个函数,它应该接收一个参数 - Update 实例
- last: 如果为 true 且处理程序被激活,则处理程序将是当前请求中最后运行的处理程序。
- name: 处理程序名称,对调试很有用,可以知道哪个处理程序被激活。
您可以按顺序(函数、过滤器、last、name)或按名称传递参数
$handler->on_message( filter: "blabal", func: fn($u) => $u->reply("bla"), last: true, name: 'reply bla to blabla' );
特殊处理程序名称
此列表中的特殊处理程序将在特定 TBD 中激活。
- before: 在任何其他处理程序之前激活。可以返回新数组中要运行的功能,以便通过返回空数组来禁用所有功能。
- middle: 在每个处理程序之前运行。接受 2 个参数:Update 和 $next,它使用处理程序的功能。
- after: 在所有处理程序完成后激活。用于清理或写入数据库。
- fallback: 仅在没有其他处理程序激活时激活。
此列表中的特殊处理程序将在特定更新类型中激活。
- on_update: 在每个更新上激活。接受更新类型/过滤器(message、callback_query 等)。
- on_message: 在 'message' 更新上激活。接受消息/过滤器(/start、menu、word、test 等)。
- on_edit: 在 'edited_message' 更新上激活。接受新消息/过滤器。
- on_cbq: 在 'callback_query' 更新上激活。接受与 callback_data 匹配的文本作为过滤器。
- on_file: 当请求中有文件时激活(无论更新类型如何)。接受文件类型/过滤器(photo、audio 等)。
- on_service:在更新是服务消息时激活,不接受字符串或数组过滤器,只接受函数(字符串或数组会导致处理器不激活)。
配置
您可以配置各种内容,请参阅src/config.php文件。可以在json文件中设置,并使用上面显示的load
方法加载。
更新
本类中所有bot API方法以及更多。此类实例传递给处理器。
Telegram API方法 - https://core.telegram.org/bots/api#available-methods
新增方法
- reply:回复消息。
- delete:删除消息。
- ban:[仅在群组和频道中] 将用户从聊天中禁言。
- leave:离开群组或频道。
- edit:编辑消息。
- forward:将消息转发到另一个聊天,带有或没有信用或作为副本。
- alert:回复callback_query。
- download:下载消息中的媒体。
- editKeyboard:编辑内联键盘。
- editButton:仅编辑一个内联按钮。
此外,还有很多预设变量可以用于许多更新部分。请参阅update.php文件。
变量
部分列表
- chat:消息发送的聊天。
- from:发送消息的用户。在私聊中与chat相同。
- updateType:更新类型(消息、callback_query等)。
- cb_answered:callback_query是否已回答。可以在after处理器中用于回答未回答的情况。
- service:如果消息是服务消息。
- media:包含来自消息的媒体。
您可以以对象或数组的形式访问更新。$u->message->chat->id
或$u['message']['chat']['id']
。
您可以跳过更新类型(如上面的例子中的message)。
$u->data
将在回调更新中是回调数据。$u->message_id
是消息_id。
加载器
Server类扩展了Loader。您不应直接使用它。
您可以加载文件、文件夹或处理器。
额外访问
带有更改其他机器人处理器能力的加载的文件。
加载的文件中的处理器使用bot_lib/Server的$this。
Server类中的files
属性包含每个由服务器加载的文件的
- 路径
- 文件名
- 处理器
- 配置
。
您可以在examples文件夹中的示例中看到您可以用额外访问做什么。
辅助工具
包含静态辅助函数。
- keyboard:轻松创建内联键盘。请参阅注释了解如何使用。
- permissions:创建ChatPermissions json。
调试
启用服务器的调试日志
use Psr\Log\LogLevel; $server->setLogLevel(LogLevel::DEBUG);
要为每个机器人启用日志记录,可以将此添加到机器人文件中
use Psr\Log\LogLevel; $config->setLevel(LogLevel::DEBUG);