valzargaming / yasmin
Requires
- php: >=7.1
- ext-bcmath: *
- ext-date: *
- ext-filter: *
- ext-json: *
- ext-mbstring: *
- ext-openssl: *
- ext-pcre: *
- ext-zlib: *
- clue/buzz-react: ^2.6.0
- psr/http-message: ^1.0
- ratchet/pawl: ^0.3.1
- react/event-loop: ^1.0|^0.5|^0.4.3
- react/filesystem: ^0.1.1
- react/promise: ^2.7.0
- ringcentral/psr7: ^1.2
- valzargaming/collection: ^0.2.0
- valzargaming/eventemitter: ^0.1.5
- valzargaming/validator: ^0.3.0
Suggests
- charlottedunois/athena: For Redis-backed ratelimit bucket
- charlottedunois/kimberly: For WS encoding etf 🚀
Replaces
- charlottedunois/yasmin: dev-master
This package is auto-updated.
Last update: 2021-05-23 20:00:35 UTC
README
此分支致力于维护 Palace Bot#9203 所使用的 Yasmin 核心。原始代码库 carchive/Yasmin 于 2019 年 12 月存档,后来被移除。该机器人已确认在 PHP 7.3 和 7.4.3 上工作。
Palace Bot Github: https://github.com/valzargaming/Palace
Discord 服务器: https://discord.gg/vNntRSe
Yasmin
Yasmin 是一个用于 PHP 的 Discord API 库。Yasmin 连接到网关并与 REST API 交互。
此库仅适用于 PHP 7.1(及以后版本)和 CLI 使用。Yasmin 只支持机器人账户。
开始之前
在开始使用此库之前,您需要了解 PHP 的工作原理,您需要了解该语言,您还需要了解事件循环和承诺是如何工作的。这是开始前的基本要求。没有这些知识,您只会遭受痛苦。
请参阅https://github.com/elazar/asynchronous-php获取资源。
入门
使用 Yasmin 入门非常简单。您只需使用 composer 安装 Yasmin 及其依赖项。之后,您可以将 composer 的自动加载器包含到您的文件中,然后开始与 Discord 和 Yasmin 交互!
composer require valzargaming/yasmin:"dev-master as 1.0.x-dev"
监听 error
事件很重要。如果您没有附加 error
监听器,事件发射器将抛出异常。
请确保您还有一个所有承诺的拒绝处理程序,因为未处理的承诺拒绝会被吞没,您将永远不知道它们发生了什么。
重要信息:在类实例上实现的属性(几乎全部属性)都通过魔法方法实现,如果属性不存在则抛出异常。
有一个带有一些提示的 WIP Gitbook,您可以自由阅读:https://charlottedunois.gitbooks.io/yasmin-guide/content/
示例
这是一个使用 Yasmin 的非常简单的示例。您应该将所有监听器代码放入 try-catch 块中,并相应地处理异常。
// Include composer autoloader $loop = \React\EventLoop\Factory::create(); $client = new \CharlotteDunois\Yasmin\Client(array(), $loop); $client->on('error', function ($error) { echo $error.PHP_EOL; }); $client->on('ready', function () use ($client) { echo 'Logged in as '.$client->user->tag.' created on '.$client->user->createdAt->format('d.m.Y H:i:s').PHP_EOL; }); $client->on('message', function ($message) { echo 'Received Message from '.$message->author->tag.' in '.($message->channel instanceof \CharlotteDunois\Yasmin\Interfaces\DMChannelInterface ? 'DM' : 'channel #'.$message->channel->name ).' with '.$message->attachments->count().' attachment(s) and '.\count($message->embeds).' embed(s)'.PHP_EOL; }); $client->login('YOUR_TOKEN')->done(); $loop->run();
语音支持
没有语音支持。
Windows 和 SSL
不幸的是,在Windows上运行的PHP无法访问Windows证书存储。这是一个问题,因为TLS被使用,因此会应用证书验证(关闭此选项不是一种选择)。
您将注意到这个问题,您的脚本在经过一次循环后立即退出,没有任何错误。不幸的是,没有错误或异常。
因此,使用这个库的用户需要从cURL网站下载证书颁发机构提取文件。
必须将caextract的路径设置在php.ini
中的openssl.cafile
。
Linux支持
使用git克隆此仓库。
Yasmin需要PHP 7.1+才能运行,还需要以下软件包。建议使用您仓库中可用的最新版PHP。在提供的示例中,将使用7.1。将7.1替换为您当前使用的版本。
Ubuntu
sudo apt install openssl php7.1 php7.1-bcmath php7.1-mbstring
有限支持通知
我无法为由于过时的先决条件或实现SSL而引起的大多数问题提供支持。如果您在Windows上托管并需要cacert.pem文件,但又不愿意自己生成,那么我个人推荐使用WinNMP,因为它在其/data/目录中生成了一个文件,您可以将您的PHP.ini指向该文件。
其他发行版
请参考您的发行版仓库以查找上述软件包。