mirror of
https://github.com/teloxide/teloxide.git
synced 2024-10-24 09:57:18 +02:00
11e208e8a2
Fix arguments and return types of live location methods
31 KiB
31 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)
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)
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)
Deprecated
Update::user
, useUpdate::from
instead (#850)
Fixed
- Deserialization of
ApiError::CantParseEntities
(#839)
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)