mirror of
https://github.com/teloxide/teloxide.git
synced 2024-12-22 14:35:36 +01:00
34 KiB
34 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
unreleased
Added
ChatPermission::can_*
helper functions (#851)mentioned_users
functions forCallbackQuery
,Chat
,ChatJoinRequest
,ChatMemberUpdated
,Game
,Message
,Poll
,Update
which return all containedUser
instances (#850)Message::video_chat_participants_invited
(#850)Update::from
, a replacement forUpdate::user
(#850)Seconds
type, which represents a duration is seconds (#859)VideoChatEnded::duration
field that was previously missed (#859)ThreadId
newtype overMessageId
, used for identifying reply threads (#887)ChatId::as_user
(#905)- Implement
PartialEq<ChatId> for UserId
andPartialEq<UserId> for ChatId
(#905) ChatId::{MIN, MAX}
(#905)
Fixed
- Return types of
edit_message_live_location_inline
,stop_message_live_location_inline
, andset_game_score_inline
:Message
=>True
(#854) - Remove
latitude
andlongitude
parameters fromstop_message_live_location
andstop_message_live_location_inline
(#854) - Fix the type of
photo_size
,photo_width
andphoto_height
in thesend_invoice
method (#936)
Changed
- Types of
Option<bool>
fields ofKeyboardMarkup
,KeyboardRemove
andForceReply
tobool
([#853][pr853]) - Type of
KeyboardMarkup::input_field_placeholder
:Option<String>
=>String
([#853][pr853]) - The following fields now use
Seconds
type instead ofu32
,u16
orDuration
(#859)Animation::duration
Audio::duration
Chat::message_auto_delete_time
Chat::slow_mode_delay
InlineQueryResultLocation::live_period
Location::live_period
MessageAutoDeleteTimerChanged::message_auto_delete_time
Poll::open_period
Video::duration
VideoNote::duration
Voice::duration
RequestError::MigrateToChatId
single fields type toChatId
(#859)RequestError::RetryAfter
single fields type toSeconds
(#859)CallbackGame
,ForumTopicClosed
,ForumTopicReopened
,GeneralForumTopicHidden
,GeneralForumTopicUnhidden
andWriteAccessAllowed
structures are now defined as named (struct S {}
) instead of unit (struct S;
) in order to fix their deserialization (#876)Download
now uses GAT feature on theFut
andErr
associated types, instead of a lifetime on the whole trait (#885)- Renamed
ForumTopic::message_thread_id
intothread_id
(#887) ForumTopic::thread_id
andMessage::thread_id
now useThreadId
instead ofi32
(#887)message_thread_id
method parameters now useThreadId
instead ofi32
(#887)DiceEmoji
variant order (#887)Dice::value
now useu8
, instead ofi32
(#887)Invoice::total_amount
,LabeledPrice::amount
,PreCheckoutQuery::total_amount
,SuccessfulPayment::total_amout
now useu32
, instead ofi32
(#887)Forward::message_id
andMessage::forward_from_message_id
now useMessageId
instead ofi32
(#887)Poll::total_voter_count
andPollOption::voter_count
now useu32
instead ofi32
(#887)PollAnswer::option_ids
now useu8
instead ofi32
(#887)- Use
u32
for sizes andSeconds
for timespans inInlineQueryResult*
(#887) SendGame::reply_to_message_id
,SendSticker::reply_to_message_id
andSendInvoice::reply_to_message_id
now useMessageId
instead ofi32
(#887)- Use
UpdateId
forUpdate::id
(#892) - MSRV (Minimal Supported Rust Version) was bumped from
1.64.0
to1.68.0
(#950) - Add proper support for
edit_message_caption_inline
,copy_message
,answer_inline_query
,answer_web_app_query
,send_media_group
,edit_message_media
, andedit_message_media_inline
toDefaultParseMode
adaptor (#961)- Note that now
DefaultParseMode
sets the default onsend
, instead of request creation DefaultParseMode
now also requires that the supported requests implementClone
(as a user you should not notice anything changing)
- Note that now
Deprecated
Update::user
, useUpdate::from
instead (#850)
Fixed
- Deserialization of
ApiError::CantParseEntities
(#839) - Deserialization of empty (content-less) messages that can sometimes appear as a part of callback query (#850, issue #873)
0.9.1 - 2023-02-15
Fixed
Update::user
now handles channel posts, chat member changes and chat join request updates correctly (#835)- In cases when
teloxide
can't deserialize an update, error now includes the full json value (#826) - Deserialization of topic messages (#830)
Added
ApiError::ImageProcessFailed
(#825)
0.9.0 - 2023-01-17
Changed
- The methods
ChatMember::{can_pin_messages, can_invite_users, can_change_info}
now take into account the permissions ofRestricted
chat member kind (#764) - The method
ChatMemberKind::is_present
now takes into account the value ofRestricted::is_member
field (#764) - The following functions were made
#[must_use]
:MaskPoint::{new, point}
StickerKind::{premium_animation, mask_position, custom_emoji_id}
Option<bool>
fields ofAdministrator
are nowbool
(#800):can_post_messages
can_edit_messages
can_pin_messages
can_manage_topics
Added
Restricted::{is_member, can_change_info, can_invite_users, can_pin_messages, can_send_polls}
fields (#764)ChatMember::can_send_polls
method (#764)- Support for Telegram Bot API version 6.3 ([#789][pr789])
- Support for Telegram Bot API version 6.4 (#809)
Deprecated
ChatMemberKind
methods (#800):can_change_info
can_invite_users
can_pin_messages
can_send_messages
can_send_media_messages
can_send_other_messages
can_send_polls
can_add_web_page_previews
ChatMemberStatus::is_present
method (#800)
Fixed
ChatMemberKind::can_manage_chat
method now correctly returnsfalse
for non owner/administrator users (#800)
0.8.0 - 2022-10-03
Added
- Support for Telegram Bot API version 6.2 (#251)
Changed
- Removed
file_
prefix fromFile
andFileMeta
fields #255 Animation
,Audio
,Document
,PassportFile
,PhotoSize
,Video
,VideoNote
andVoice
now containFileMeta
instead of its fields (#253)- Combined with
File
fields renaming, instead of.file_size
you can write.file.size
and similarly with other fields
- Combined with
- You can now
.await
anyRequest
! (#249)Request
now requiresSelf: IntoFuture
- There is no need for
AutoSend
anymore
- MSRV (Minimal Supported Rust Version) was bumped from
1.58.0
to1.64.0
- Message id parameters and fields now use
MessageId
type instead ofi32
(#254) - Refactored
Sticker
and related types (#251)
Removed
- Methods for creating
InlineQuery
(#246)
Fixed
SetWebhook
request can now properly send certificate (#250)- Serialization of
InputSticker::Webm
(#252)
Deprecated
AutoSend
adaptor (#249)
0.7.1 - 2022-08-19
Fixed
ErasedRequester<E>
now implementsClone
even ifE
is notClone
(#244)
Added
From<ApiError>
,From<DownloadError>
andFrom<std::io::Error>
impls forRequestError
(#241)
Changed
- More functions are now marked with
#[must_use]
(#242)
0.7.0 - 2022-07-19
Added
InlineKeyboardButton::{pay, login, web_app, callback_game, pay}
constructors (#231)- Support for Telegram Bot API version 6.1 (#233)
StickerKind
that is now used instead ofis_animated
andis_video
fields ofSticker
andStickerSet
(#238)
Changed
InlineKeyboardButtonKind::Pay
's only field now has typeTrue
(#231)file_size
fields are now alwaysu32
(#237)File
is now split intoFile
andFileMeta
, the latter is used inUploadStickerFile
andSticker::premium_animation
(#237)
Deprecated
InlineKeyboardButton::{text, kind}
functions (#231)
Removed
ChatPrivate::type_
field (#232)
0.6.3 - 2022-06-21
Fixed
- Fix
Message::parse_caption_entities
(#229)
0.6.2 - 2022-06-16
Fixed
- Fix
ChatPrivate
serialization (#226) - Build with particular crates versions (enable
"codec"
feature oftokio-util
) (#225) - Remove trailing
/
fromMessage::url
(on ios it caused problems) (#223) - Fix incorrect panic in
User::is_channel
(#222)
Added
Message::{url_of, comment_url, comment_url_of, url_in_thread, url_in_thread_of}
functions (#223)- Utilities to parse message entities (see
Message::parse_entities
) ([#217][pr217])
0.6.1 - 2022-06-02
Fixed
- Deserialization of
File
whenfile_path
orfile_size
are missing (#220) - Correct how
NotFound
andUserDeactivated
errors are deserialized (#219)
Added
is_*
methods toChatMemberStatus
analogous to theChatMember{,Kind}
methods (#216)ChatId
andUserId
to the prelude (#212)
0.6.0 - 2022-04-25
Added
- Support for Telegram Bot API version 6.0 (#206, #211)
- Note that some field were renamed
- Shortcut methods for
MessageEntity
(#208, #210)
Changed
- Make
KeyboardMarkup
creation more convenient (#207)- Accept
IntoIterator
inKeyboardMarkup::append_row
. - Accept
Into<String>
instead ofString
inInlineKeyboardButton::{url, callback, switch_inline_query, switch_inline_query_current_chat}
.
- Accept
0.5.1 - 2022-04-18
Fixed
- Document the
errors
module.
0.5.0 - 2022-04-13
Added
errors
module anderrors::AsResponseParameters
trait (#130)UserId::{url, is_anonymous, is_channel, is_telegram}
convenience functions (#197)User::{tme_url, preferably_tme_url}
convenience functions (#197)Me::username
andDeref<Target = User>
implementation forMe
(#197)Me::{mention, tme_url}
(#197)AllowedUpdate::ChatJoinRequest
(#201)ChatId::{is_user, is_group, is_channel_or_supergroup}
functions #198
Changed
user.id
now usesUserId
type,ChatId
now represents only chat id, not channel username, allchat_id
function parameters now acceptRecipient
[BC]- Improve
Throttling
adoptor (#130)- Freeze when getting
RetryAfter(_)
error - Retry requests that previously returned
RetryAfter(_)
error
- Freeze when getting
RequestError::RetryAfter
now has aDuration
field instead ofi32
Fixed
- A bug in
Message::url
implementation (#198) - Fix never ending loop that caused programs that used
Throttling
to never stop, see issue #535 (#130)
0.4.5 - 2022-04-03
Fixed
- Hide bot token in errors (#200)
0.4.4 - 2022-04-21
Added
WrongFileIdOrUrl
andFailedToGetUrlContent
errors (#188)NotFound
error (#190)HasPayload::with_payload_mut
function (#189)
0.4.3 - 2022-03-08
Added
User::is_telegram
function (#186)
Fixed
Update::chat()
now returnsSome(&Chat)
forUpdateKind::ChatMember
,UpdateKind::MyChatMember
,UpdateKind::ChatJoinRequest
(#184)get_updates
timeouts (partially revert buggy #180) (#185)
0.4.2 - 2022-02-17 [yanked]
Deprecated
Message::chat_id
use.chat.id
field instead (#182)
Fixed
- Serialization of
SendPoll::type_
(it's now possible to send quiz polls) (#181)
Added
Payload::timeout_hint
method to properly handle long running requests likeGetUpdates
(#180)
0.4.1 - 2022-02-13
Fixed
- Deserialization of
UntilDate
(#178)
0.4.0 - 2022-02-03
Added
ApiError::TooMuchInlineQueryResults
(#135)ApiError::NotEnoughRightsToChangeChatPermissions
(#155)- Support for 5.4 telegram bot API (#133)
- Support for 5.5 telegram bot API (#143, #164)
- Support for 5.6 telegram bot API (#162)
- Support for 5.7 telegram bot API (#175)
EditedMessageIsTooLong
error (#109)UntilDate
enum and use it for{Restricted, Banned}::until_date
(#117)Limits::messages_per_min_channel
(#121)media_group_id
field toMediaDocument
andMediaAudio
(#139)caption_entities
method toInputMediaPhoto
(#140)User::is_anonymous
andUser::is_channel
functions (#151)UpdateKind::Error
(#156)
Changed
- Refactor
InputFile
(#167)- Make it an opaque structure, instead of enum
- Add
read
constructor, that allows creatingInputFile
fromimpl AsyncRead
- Internal changes
- Refactor errors (#134)
- Rename
DownloadError::NetworkError
toNetwork
- Rename
RequestError::ApiError
toApi
- Remove
RequestError::Api::status_code
and renameRequestError::Api::kind
to0
(struct to tuple struct) - Rename
RequestError::NetworkError
toNetwork
- Implement
Error
forApiError
- Rename
- Use
url::Url
for urls, usechrono::DateTime<Utc>
for dates in types (#115) - Mark
ApiError
asnon_exhaustive
(#125) InputFile
and related structures now do not implementPartialEq
,Eq
andHash
(#133)- How forwarded messages are represented (#151)
RequestError::InvalidJson
now has araw
field with raw json for easier debugability (#150)ChatPermissions
is now bitflags (#157)- Type of
WebhookInfo::ip_address
fromOption<String>
toOption<std::net::IpAddr>
(#172) - Type of
WebhookInfo::allowed_updates
fromOption<Vec<String>>
toOption<Vec<AllowedUpdate>>
(#174)
Fixed
- Deserialization of chat migrations, see issue #427 (#143)
- Type of
BanChatMember::until_date
:u64
->chrono::DateTime<Utc>
(#117) - Type of
Poll::correct_option_id
:i32
->u8
(#119) - Type of
Poll::open_period
:i32
->u16
(#119) Throttle
adaptor not honouring chat/min limits (#121)- Make
SendPoll::type_
optional (#133) - Bug with
caption_entities
, see issue #473 - Type of response for
CopyMessage
method (#141, #142) - Bad request serialization when the
language
field ofMessageEntityKind::Pre
isNone
(#145) - Deserialization of
MediaKind::Venue
(#147) - Deserialization of
VoiceChat{Started,Ended}
messages (#153) - Serialization of
BotCommandScope::Chat{,Administrators}
(#154)
Removed
get_updates_fault_tolerant
method andSemiparsedVec
(#156)
0.3.3 - 2021-08-03
Fixed
- Compilation with
nightly
feature (usetype_alias_impl_trait
instead ofmin_type_alias_impl_trait
) (#108)
0.3.2 - 2021-07-27
Added
ErasedRequester
bot adaptor,ErasedRequest
struct,{Request, RequesterExt}::erase
functions (#105)Trace
bot adaptor (#104)HasPayload
,Request
andRequester
implementations foreither::Either
(#103)
0.3.1 - 2021-07-07
0.3.0 - 2021-07-05
Added
impl Clone
for {CacheMe
,DefaultParseMode
,Throttle
} (#76)DefaultParseMode::parse_mode
which allows to get currently used default parse mode (#77)Thrrotle::{limits,set_limits}
functions (#77)Throttle::{with_settings,spawn_with_settings}
andthrottle::Settings
(#96)- Getters for fields nested in
Chat
(#80) - API errors:
ApiError::NotEnoughRightsToManagePins
,ApiError::BotKickedFromSupergroup
(#84) - Telegram bot API 5.2 support (#86)
- Telegram bot API 5.3 support (#99)
net::default_reqwest_settings
function (#90)
Changed
Message::url
now returns links to messages in private groups too (#80)- Refactor
ChatMember
methods (#74)- impl
Deref<Target = ChatMemberKind>
to makeChatMemberKind
's methods callable directly onChatMember
- Add
ChatMemberKind::is_{creator,administrator,member,restricted,left,kicked}
which checkkind
along withis_privileged
andis_in_chat
which combine some of the above. - Refactor privilege getters
- impl
- Rename
ChatAction::{RecordAudio => RecordVoice, UploadAudio => UploadVoice}
(#86) - Use
url::Url
for urls, usechrono::DateTime<Utc>
for dates (#97)
Fixed
- telegram_response: fix issue
retry_after
andmigrate_to_chat_id
handling (#94) - Type of
PublicChatSupergroup::slow_mode_delay
field:Option<i32>
=>Option<u32>
(#80) - Add missing
Chat::message_auto_delete_time
field (#80) - Output types of
LeaveChat
PinChatMessage
,SetChatDescription
,SetChatPhoto
SetChatTitle
,UnpinAllChatMessages
andUnpinChatMessage
:String
=>True
(#79) SendChatAction
output typeMessage
=>True
(#75)GetChatAdministrators
output typeChatMember
=>Vec<ChatMember>
(#73)reqwest
dependency bringingnative-tls
in even whenrustls
was selected (#71)- Type of
{Restricted,Kicked}::until_date
fields:i32
=>i64
(#74) - Type of
PhotoSize::{width,height}
fields:i32
=>u32
(#100)
0.2.2 - 2020-03-22
Fixed
- Typo:
ReplyMarkup::{keyboad => keyboard}
(#69)- Note: method with the old name was deprecated and hidden from docs
0.2.1 - 2020-03-19
Fixed
- Types fields privacy (make fields of some types public) (#68)
Dice::{emoji, value}
MessageMessageAutoDeleteTimerChanged::message_auto_delete_timer_changed
PassportElementError::{message, kind}
StickerSet::thumb
0.2.0 - 2020-03-16
Changed
- Refactor
ReplyMarkup
(#pr65) (BC)- Rename
ReplyMarkup::{InlineKeyboardMarkup => InlineKeyboard, ReplyKeyboardMarkup => Keyboard, ReplyKeyboardRemove => KeyboardRemove}
- Add
inline_kb
,keyboad
,kb_remove
andforce_reply
ReplyMarkup
consructors - Rename
ReplyKeyboardMarkup
=>KeyboardMarkup
- Rename
ReplyKeyboardRemove
=>KeyboardRemove
- Remove useless generic param from
ReplyKeyboardMarkup::new
andInlineKeyboardMarkup::new
- Change parameters order in
ReplyKeyboardMarkup::append_to_row
andInlineKeyboardMarkup::append_to_row
- Rename
- Support telegram bot API version 5.1 (see it's changelog) (#pr63) (BC)
- Support telegram bot API version 5.0 (see it's changelog) (#pr62) (BC)
Added
GetUpdatesFaultTolerant
- fault toletant version ofGetUpdates
(#58) (BC)- Derive
Clone
forAutoSend
.
Fixed
- Make
MediaContact::contact
public (#pr64) set_webhook
signature (makeallowed_updates
optional) (#59)- Fix typos in payloads (#57):
get_updates
:offset
i64
->i32
send_location
: makelive_period
optional
send_contact
signature (phone_number
andfirst_name
f64
=>String
) (#56)
Removed
Message::text_owned
(#pr62) (BC)
Changed
NonStrictVec
->SemiparsedVec
.
0.1.1 - 2020-02-17
Fixed
- Remove
dbg!
call from internals (#53)
0.1.0 - 2020-02-17
Added
#[non_exhaustive]
onInputFile
since we may want to add new ways to send files in the future (#49)MultipartPayload
for future proofing (#49)- Support for
rustls
(#24) #[must_use]
attr to payloads implemented by macro (#22)- forward-to-deref
Requester
impls (#39) Bot::{set_,}api_url
methods (#26, #35)payloads
moduleRequesterExt
trait which is implemented for allRequester
s and allows easily wrapping them in adaptorsadaptors
module (#14)throttle
,cache_me
,auto_send
andfull
crate features- Request throttling - opt-in feature represented by
Throttle
bot adapter which allows automatically checking telegram limits (#10, #46, #50) - Request auto sending - ability to
.await
requests without need to call.send()
(opt-in feature represented byAutoSend
bot adapter, #8) get_me
caching (opt-in feature represented byCacheMe
bot adapter)
Requester
trait which represents bot-clients (#7, #12, #27){Json,Multipart}Request
theBot
requests types (#6)Output<T>
alias to<<T as HasPayload>::Payload as Payload>::Output
Payload
,HasPayload
andRequest
traits which represent different parts of the request (#5)GetUpdatesNonStrict
'telegram' method, that behaves just likeGetUpdates
but doesn't #2 fail if one of updates fails to be deserialized- Move core code here from the
teloxide
main repo, for older changes see it'sCHANGELOG.md
.- Following modules were moved:
bot
requests
[exceptrequests::respond
function]types
errors
net
[private]
client_from_env
was moved fromteloxide::utils
to crate root ofteloxide-core
- To simplify
GetUpdates
request it was changed to simply returnVec<Update>
(instead ofVec<Result<Update, (Value, serde_json::Error)>>
)
- Following modules were moved:
Changed
- Cleanup setters in
types::*
(remove most of them) (#44) - Refactor
KeyboardButtonPollType
(#44) - Replace
Into<Vec<_>>
byIntoIterator<Item = _>
in function arguments (#44) - Update dependencies (including tokio 1.0) (#37)
- Refactor file downloading (#30):
- Make
net
module public - Move
Bot::download_file{,_stream}
methods to a newDownload
trait- Impl
Download
for all bot adaptors & theBot
itself
- Impl
- Change return type of
download_file_stream
— returnStream<Result<Bytes>>``, instead of
Future<Result<Stream<Result>>>`` - Add
api_url
param to standalone versions ofdownload_file{,_stream}
- Make
net::{TELEGRAM_API_URL, download_file{,_stream}}
pub
- Make
- Refactor
Bot
(#29):- Move default parse mode to an adaptor (
DefaultParseMode
) - Remove bot builder (it's not usefull anymore, since parse_mode is moved away)
- Undeprecate bot constructors (
Bot::{new, with_client, from_env_with_client}
)
- Move default parse mode to an adaptor (
- Rename
StickerType
=>InputSticker
,{CreateNewStickerSet,AddStickerToSet}::sticker_type}
=>sticker
(#23, #43) - Use
_: IntoIterator<Item = T>
bound instead of_: Into<Vec<T>>
in telegram methods which accept collections (#21) - Make
MessageDice::dice
pub (#20) - Merge
ApiErrorKind
andKnownApiErrorKind
intoApiError
(#13) - Refactor ChatMember (#9)
- Replace a bunch of
Option<_>
fields withChatMemberKind
- Remove setters (users are not expected to create this struct)
- Add getters
- Replace a bunch of
- Changed internal mechanism of sending multipart requests (#1)
- Added
RequestError::Io(io::Error)
to wrap I/O error those can happen while sending files to telegram - Make all fields of all methods
pub
(#3)