naftali1000 / async_bot
异步Telegram机器人库
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:39:05 UTC
README
基于amphp的简单、灵活的异步库,用于Telegram机器人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的第二个参数中的自定义名称)。
您可以将 token
参数添加到webhook URL,服务器将设置并使用此token。
运行 php server.php
。
examples文件夹中有更多处理器、配置和服务器选项。
说明
库中有5个主要对象
- Server: 扩展Loader。加载文件、运行http-server和激活处理器。
- Config: 配置。
- Update: 扩展API和HTTP。包含发送请求到机器人API的所有方法。
- Handler: 创建将异步运行的处理器。
- Filter: 静态方法以创建过滤器。
Server
服务器加载所有您的机器人文件,获取处理器,并运行一个服务器监听传入的请求。一旦服务器收到请求,它将激活请求路径中设置的处理器。您可以将任何请求路径设置为任何文件。
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:在每次更新时激活。接受更新类型/s作为过滤器(消息、callback_query等)。
- on_message:在'message'更新时激活。接受消息/s作为过滤器(/start、menu、word、test等)。
- on_edit:在'edited_message'更新时激活。接受新消息/s作为过滤器。
- on_cbq:在'callback_query'更新时激活。接受与callback_data匹配的文本作为过滤器。
- on_file:当请求中有文件时激活(无论更新类型如何)。接受文件类型/s作为过滤器(照片、音频等)。
- on_service:当更新是服务消息时激活,不接受字符串或数组过滤器,仅接受函数(字符串或数组会导致处理器不激活)。
Config
您可以根据需要配置各种设置,请参阅 src/config.php 文件。可以在 JSON 文件中设置,并使用上述示例中的 load
方法加载。
更新
此类中包含所有机器人 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
是 message_id。
加载器
Server 类扩展了 Loader。您不应直接使用它。
您可以加载文件、文件夹或处理程序。
额外访问
加载的文件可以更改其他机器人的处理程序。
使用 $this of bot_lib/Server 加载的文件中的处理程序。
Server 类的 files
属性包含以下内容
- 路径
- 文件名
- 处理程序
- 配置
每个由服务器加载的文件。
您可以在 examples 文件夹中查看使用额外访问可以做什么的示例。
辅助工具
包含静态辅助函数。
- keyboard: 简单地创建内联键盘。请参阅注释了解如何使用。
- permissions: 创建 ChatPermissions JSON。
调试
要启用服务器的调试日志,请这样做
use Psr\Log\LogLevel; $server->setLogLevel(LogLevel::DEBUG);
要为每个机器人启用单独的日志记录,您可以在机器人文件中添加此内容
use Psr\Log\LogLevel; $config->setLevel(LogLevel::DEBUG);