Merge pull request #210 from SpriteOvO/more-shortcuts

Add shortcuts for other kinds of entities
This commit is contained in:
Waffle Maybe 2022-04-25 13:17:49 +04:00 committed by GitHub
commit b991f47800
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 89 additions and 2 deletions

View file

@ -11,9 +11,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Support for Telegram Bot API [version 6.0](https://core.telegram.org/bots/api#april-16-2022)
- Note that some field were renamed
- Method `MessageEntity::user_mention` ([#208][pr208])
- Shortcut methods for `MessageEntity` ([#208][pr208], [#210][pr210])
[pr208]: https://github.com/teloxide/teloxide-core/pull/208
[pr210]: https://github.com/teloxide/teloxide-core/pull/210
### Changed

View file

@ -28,9 +28,95 @@ impl MessageEntity {
}
}
/// Create a message entity representing a bold text.
pub const fn bold(offset: usize, length: usize) -> Self {
Self {
kind: MessageEntityKind::Bold,
offset,
length,
}
}
/// Create a message entity representing an italic text.
pub const fn italic(offset: usize, length: usize) -> Self {
Self {
kind: MessageEntityKind::Italic,
offset,
length,
}
}
/// Create a message entity representing an underline text.
pub const fn underline(offset: usize, length: usize) -> Self {
Self {
kind: MessageEntityKind::Underline,
offset,
length,
}
}
/// Create a message entity representing a strikethrough text.
pub const fn strikethrough(offset: usize, length: usize) -> Self {
Self {
kind: MessageEntityKind::Strikethrough,
offset,
length,
}
}
/// Create a message entity representing a spoiler text.
pub const fn spoiler(offset: usize, length: usize) -> Self {
Self {
kind: MessageEntityKind::Spoiler,
offset,
length,
}
}
/// Create a message entity representing a monowidth text.
pub const fn code(offset: usize, length: usize) -> Self {
Self {
kind: MessageEntityKind::Code,
offset,
length,
}
}
/// Create a message entity representing a monowidth block.
pub const fn pre(language: Option<String>, offset: usize, length: usize) -> Self {
Self {
kind: MessageEntityKind::Pre { language },
offset,
length,
}
}
/// Create a message entity representing a clickable text URL.
pub const fn text_link(url: reqwest::Url, offset: usize, length: usize) -> Self {
Self {
kind: MessageEntityKind::TextLink { url },
offset,
length,
}
}
/// Create a message entity representing a text mention.
///
/// # Note
///
/// If you don't have a complete [`User`] value, please use
/// [`MessageEntity::text_mention_id`] instead.
pub fn text_mention(user: User, offset: usize, length: usize) -> Self {
Self {
kind: MessageEntityKind::TextMention { user },
offset,
length,
}
}
/// Create a message entity representing a text link in the form of
/// `tg://user/?id=...` that mentions user with `user_id`.
pub fn user_mention(user_id: UserId, offset: usize, length: usize) -> Self {
pub fn text_mention_id(user_id: UserId, offset: usize, length: usize) -> Self {
Self {
kind: MessageEntityKind::TextLink { url: user_id.url() },
offset,