此包已被废弃,不再维护。作者建议使用 team-reflex/discord-php 包。

Yasmin 是一个用于 PHP 的 Discord API 库。

v1.2.0 2020-12-19 12:39 UTC

README

Yasmin 是一个用于 PHP 的 Discord API 库。Yasmin 可以连接到网关并交互 REST API。

此库仅适用于 PHP 7.1(及以后版本)和 CLI。Yasmin 只支持机器人账户。

分支版本

从 v1.0 开始,我将对代码进行重大更改。

composer require laravel-discord/yasmin
  • 需要 PHP>=7.3

开始之前

在您开始使用此库之前,您需要了解 PHP 的工作原理,您需要了解语言,您还需要了解事件循环和承诺的工作方式。这是开始前的基本要求。没有这些知识,您只会受苦。

请参阅 https://github.com/elazar/asynchronous-php 以获取资源。

入门

使用 Yasmin 入门非常简单。您只需要使用 composer 安装 Yasmin 和其依赖项。然后,您可以将 composer 的自动加载器包含到您的文件中,并开始与 Discord 和 Yasmin 交互!

composer require charlottedunois/yasmin

监听 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();

语音支持

没有语音支持。

文档

https://charlottedunois.github.io/Yasmin/

Windows 和 SSL

遗憾的是,在Windows上运行的PHP无法访问Windows证书存储。这是一个问题,因为TLS会被使用,因此会应用证书验证(关闭此功能不是一个选项)。

您将通过脚本在一轮循环后立即退出且没有任何错误来注意到这个问题。遗憾的是,由于某种原因,没有错误或异常。

因此,使用这个库的用户需要从cURL网站下载一个证书机构提取文件
需要将caextract的路径设置在php.ini中的openssl.cafile配置项。