more-cores / discord-message-builder
4.1.0
2022-10-17 13:28 UTC
Requires
- php: >=8.0
Requires (Dev)
- mockery/mockery: ^1.0
- phpunit/phpunit: ^9.0
README
一个用于构建 Discord 消息的小型库。
安装
composer require more-cores/discord-message-builder:^4.0
使用
使用 webhook(它们的速率限制更高)
$message = new WebhookMessage();
$message->setContent($content);
$embed = new Embed();
$embed->setTitle($title);
$embed->setDescription($description);
$embed->setUrl($url);
$embed->setTimestamp($dateTime);
$embed->setColor($color);
$message->addEmbed($embed);
$message->toJson(); // valid json ready to be sent to Discord via a Webhook
或使用标准消息
$message = new Message();
$message->setContent($content);
$message->setEmbed($embed);
提及
Both Message
and WebhookMessage
offer the ability to mention roles.
// appends the mention to the previously set content. Setting the content again overrides mentions
$message->mention($roleId);
$message->isMentioned($roleId);
$message->hasMentions();
作者
// define an embed author using shorthand
$embed->setAuthor($name);
// and optionally specify specific attributes
$embed->setAuthor($name, $url);
// define an embed author by object
$author = new Author();
$author->setName($name);
$embed->setAuthor($author);
字段
// define an embed video using shorthand
$embed->addField($fieldName, $fieldValue);
// and optionally specify whether it's inline (default to false)
$embed->addField($fieldName, $fieldValue, $inline = true);
// define an embed field by object
$field = new Field();
$field->setName($name);
$field->setValue($value);
$embed->setVideo($field);
图片
$embed->setImageUrl($imageUrl);
缩略图
$embed->setThumbnailUrl($thumbnailUrl);
页脚
// define an embed footer using shorthand
$embed->setFooter($text, $iconUrl);
// and optionally specify specific attributes
$embed->setFooter($urlToImage, $width, $height);
// define an embed thumbnail by object
$thumbnail = new Thumbnail();
$thumbnail->setText($text);
$thumbnail->setUrl($urlToImage);
$embed->setFooter($thumbnail);
组件
按钮
$message->addComponent(new SuccessButton('button-id', 'Approve it'));
$message->addComponent(new DangerButton('button-id', 'Reject it'));
$message->addComponent(new PrimaryButton('button-id', 'Something else'));
$message->addComponent(new SecondaryButton('button-id', 'Something else'));
$message->addComponent(new LinkButton('https://mysite.com', 'My Site'));
选择菜单
$message->addComponent(new StringSelectMenu($menuId, [
new Option('Option 1', 'option-1'),
new Option('Option 2', 'option-2'),
]));
角色选择菜单
$message->addComponent(new RoleSelectMenu($menuId));
可提及选择菜单
$message->addComponent(new MentionableSelectMenu($menuId));
可提及选择菜单
$message->addComponent(new UserSelectMenu($menuId));
频道选择菜单
$message->addComponent(new ChannelSelectMenu($menuId));
您也可以限制可选择的频道类型
$message->addComponent(new ChannelSelectMenu($menuId, [
channelTypes: [
Channel::TYPE_GUILD_TEXT,
Channel::TYPE_GUILD_VOICE,
],
]));
文本输入
$message->addComponent(new ShortInput($fieldId, 'First Name'));
$message->addComponent(new ParagraphInput($fieldId, 'Dating Profile'));