Maybe Waffle
d2068db38c
Fix unused import when throttle feature is not enabled
2022-06-17 12:54:38 +04:00
Waffle Maybe
6f6e7a6678
Merge pull request #223 from teloxide/msg_url_impr
...
Improve url-to-message creation
2022-06-16 23:00:53 +04:00
Maybe Waffle
5053d419c3
Add functions to Message
for creating urls
2022-06-16 22:55:11 +04:00
Maybe Waffle
3e6b39c48f
Remove trailing /
from Message::url
2022-06-16 22:53:03 +04:00
Maybe Waffle
ddaf78d891
Fix ChatPrivate
serialization
2022-06-16 13:05:02 +04:00
Waffle Maybe
5e5b8e46a3
Merge pull request #217 from teloxide/message_entity_ref
...
Implement message entity parsing
2022-06-14 20:43:53 +04:00
Maybe Waffle
b85a5b3179
Fix clippy
2022-06-14 15:46:13 +04:00
Maybe Waffle
6df51a5e83
Document message entity related functions
2022-06-14 15:46:13 +04:00
Maybe Waffle
c7ea3f795a
Fix Throttle
docs
2022-06-14 15:46:13 +04:00
Maybe Waffle
312af99aa0
Add tests for MessageEntity
parsing
2022-06-14 15:46:13 +04:00
Maybe Waffle
06c265cd11
Implement message entity parsing
2022-06-14 15:46:13 +04:00
Maybe Waffle
e788dc109f
Improve documentation of file_size
fields
2022-06-13 22:23:51 +04:00
Kezi
bcd24d2d53
Fix is_channel assert
2022-06-03 21:12:07 +02:00
Waffle Maybe
5de6529b60
Merge pull request #220 from teloxide/fix_file_deserialization
...
Fix deserialization of `File`
2022-06-02 21:03:00 +04:00
Maybe Waffle
b03d9d864b
Correct deserialization of NotFound
and UserDeactivated
errors
2022-06-02 20:49:58 +04:00
Maybe Waffle
851722e46c
Fix deserialization of File
when file_path
or file_size
are missing
2022-06-02 20:47:25 +04:00
Waffle Maybe
21c5819a12
Merge pull request #218 from teloxide/doc_fix_a
...
Fix docs
2022-05-26 22:44:57 +04:00
Maybe Waffle
f732421b8c
Add a fixme
2022-05-26 22:36:23 +04:00
Maybe Waffle
5c42e28bd1
Fix link in documentation
2022-05-26 22:36:23 +04:00
Maybe Waffle
8b281ae50b
Add is_*
methods to ChatMemberStatus
2022-05-24 12:20:03 +04:00
Maybe Waffle
ca37bfda9c
Fix deserialization of ChatMemberStatus
...
We *don't* deserialize it ever, so it's not a big deal, but it's better
to stay consistent with the telegram representation.
2022-05-24 12:06:07 +04:00
Maybe Waffle
799fa6330d
Remove log::warn!
from throttle implementation
...
"Blocking on queue" literally means "nothing is happening, waiting until
something happens". There is no reason to warn users about that.
2022-05-16 21:38:38 +04:00
Maybe Waffle
bc638efc98
Add ChatId
and UserId
to the prelude
2022-05-05 16:03:28 +04:00
Maybe Waffle
9dd296659b
Dump version
2022-04-25 14:30:23 +04:00
Maybe Waffle
ecc3bfc8f9
Rename (voice* => video*) things that were missed while TBA 6.0 update
2022-04-25 14:24:34 +04:00
Sprite
e901012b97
Add shortcuts for other kinds of entities
2022-04-25 17:13:29 +08:00
Waffle Maybe
95f519073b
Merge pull request #208 from SpriteOvO/user-mention-shortcut
...
Add method `MessageEntity::user_mention`
2022-04-24 20:51:49 +04:00
Sprite
2bedd358b2
Add method MessageEntity::user_mention
2022-04-24 08:20:23 +08:00
Hirrolot
1a12dd2388
Merge branch 'master' into tune-markups
2022-04-24 01:10:08 +06:00
Hirrolot
739d9738d8
Revert "Remove an unused import in requester_ext.rs
"
...
This reverts commit 2387e11dd1
.
2022-04-24 00:08:59 +06:00
Hirrolot
2387e11dd1
Remove an unused import in requester_ext.rs
2022-04-24 00:02:53 +06:00
Hirrolot
9440609a3c
Accept Into<String>
in InlineKeyboardButton
's methods
2022-04-24 00:02:28 +06:00
Hirrolot
012fb94044
Accept IntoIterator
in KeyboardMarkup::append_row
2022-04-23 23:57:42 +06:00
Maybe Waffle
b44bbde329
Fix tests
2022-04-21 21:07:03 +04:00
Maybe Waffle
852feaeda4
Update changelog and stuff
2022-04-21 20:15:31 +04:00
Maybe Waffle
dcc4f57013
Reformat requester_forward!{} macro calls
...
...so they are at least somewhat manageable
2022-04-21 20:15:31 +04:00
Maybe Waffle
d61fe4f85d
Add TBA 6.0 methods
2022-04-21 20:15:20 +04:00
Maybe Waffle
cb8f373054
TBA 6.0 field renaming
2022-04-21 16:19:23 +04:00
Maybe Waffle
c1a763eeb0
Add TBA 6.0 types and fields
2022-04-21 16:19:13 +04:00
Maybe Waffle
cf2004dcc2
Correct MSRV
2022-04-18 22:13:36 +04:00
Maybe Waffle
f98472d798
Release v0.5.1
2022-04-18 14:03:50 +04:00
Hirrolot
5e8263704d
Document the errors
module
2022-04-18 15:51:17 +06:00
Waffle Maybe
b294631121
Merge pull request #198 from teloxide/bare_id
...
Expose bare chat id
2022-04-13 14:00:57 +04:00
Waffle Maybe
4e35f6de31
Merge pull request #130 from teloxide/chrottle_retries_and_freeze
...
`Throttle` retries and freeze
2022-04-13 13:58:59 +04:00
Maybe Waffle
6318a7e730
Apply changes from the review
...
Make `BareChatId` internal.
2022-04-13 13:57:26 +04:00
Maybe Waffle
fa189af463
ix clippyF
2022-04-13 13:56:48 +04:00
Maybe Waffle
57a3731e6b
Fix Message::url
2022-04-13 13:56:48 +04:00
Maybe Waffle
7bf3894a31
Correct documentation
...
From the standpoint of telegram supergroup is a channel...
2022-04-13 13:56:48 +04:00
Maybe Waffle
6ebdeb7f01
Expose bare chat id
2022-04-13 13:56:46 +04:00
Maybe Waffle
bf8e11f3a5
satisfy clippy
2022-04-10 19:24:18 +04:00
Maybe Waffle
c24f7f4fc0
Fix typos & stuff
2022-04-10 19:16:41 +04:00
Maybe Waffle
2477a0f945
Fix infinite loop in read_from_rx
2022-04-10 19:04:30 +04:00
Maybe Waffle
af0dd99ef4
Use Duration
instead of u32
as the RetryAfter
field
2022-04-10 18:48:00 +04:00
Maybe Waffle
d259f8aa23
Add diargam explaining how ThrottlingRequest
works
...
https://asciiflow.com/#/share/eJzFV71u2zAQfhWCkx0EDdqhRbUEGbpmCLoE0BBCpiPBEplSFBwhCFoEHTt0MNw%2BRKeMRZ9GT9KjrB8ykhj9pRUIWTR1d9%2Fdfcej7jAjEcUOS8LwGIckpQI7%2BM7Fty523r9%2Be%2BziFJ7evFNPkt5KmLj45AT1vrLdH9dlXRIffcGlDAN2fUE%2FJTSWBwm4b7nYULFYWoSHm4PVoaMENELUMgqM41Xsf8NdFDELYhRTJk20MaVFENGKe0kELxAZcHZ4a%2BL1uXZg9jATtkIejxTgGK25QBEX1Eit3QVztdQaMFAV5RFAMHy%2BRYEconXfppV4MiFhmOaRjo3157T2CQl6YfKNVIwKgkGiQu5tdKymbp%2FEFQcDujpV4j%2B%2BVnokL1ZbCe78Q196Z0Lng5Hhp3nuyvvkfBpWL1sodW53w0CRT44ich14R%2B3M7fKjq87m8cusNsNqsw712XA%2B1IEbRx0Tm2k%2FL5GAMeB%2FbWlLYONR%2B1pRGZqmOYKX1X2hBpjlxQY7FWx7ChQ0XCVY1qJTPaErVdGvEqZ%2BFsurSTGVPnSmBpjZPG0SYFIi7Zp7Ua5JUAtxTblubKNDZfUvp4lMBCttaFytUmaTjZNQlrJ5y%2Fapt4GeqjJerf1%2FPyHuj9qPkb4medo5oE8%2FCLG4oFKkZ2sJ51O2XD4vScOYTrHZTiGr7EwBtlnRcRA4oQGdREBjOF2dDpB8EURd3bhVss84r4zX12W7RuulJzfbfct2X0aN74Ns7nWbD%2Fl%2FT1r%2BQ7e%2B6fWobrtuX35ZPf15QDbCLOMyWKdlk5U%2B0b%2BPtOA8VhYUgdNy81OqtKNqXfKICgHNW4M06Kg6whN1ivbJzQ1ldKXTKOv%2B1p2etRHf3fge3%2F8FrCjqXw%3D%3D )
2022-04-10 17:34:15 +04:00
Maybe Waffle
ed48de2f75
Simplify freezing
2022-04-10 17:34:15 +04:00
Maybe Waffle
dcbef82e43
Cleanup throttling::request
2022-04-10 17:34:15 +04:00
Maybe Waffle
081b74edb0
Split Throttle
implementation into modules
2022-04-10 17:34:02 +04:00
Maybe Waffle
439a345dee
Use tokio's try_recv
instead of hacks
2022-04-10 17:25:06 +04:00
Maybe Waffle
435181fa0b
Improve sanity
...
Refactor `Throttle` send-future. Previously it was a hand-written future, but
this quickly escalated to an unreadable mess. This commit uses `box`ing and
`async fn` to mitigate this problem.
Hopefully I'm not going insane now
2022-04-10 17:25:06 +04:00
Maybe Waffle
0a03431653
Make {Json,Multipart}Request
clonable
...
This is required for the new `Throttle` design
2022-04-10 17:25:06 +04:00
Maybe Waffle
43802a5c41
Improve Throttling
adoptor
...
- Freeze when getting `RetryAfter(_)` error
- Retry requests that previously returned `RetryAfter(_)` error
2022-04-10 17:24:57 +04:00
Maybe Waffle
6a91c44836
make errors
module pub and add errors::AsResponseParameters
trait
2022-04-10 17:23:33 +04:00
Maybe Waffle
51d6800a32
Make RequestError::RetryAfter::0 u32, instead of i32
...
(you can't really wait a negative amount of time, can you?)
2022-04-10 17:22:20 +04:00
Maybe Waffle
213db7b64c
Add AllowedUpdate::ChatJoinRequest
2022-04-08 15:57:16 +04:00
Waffle Maybe
ac08117216
Merge pull request #197 from teloxide/convenience_user_and_me_methods
...
Add some convenience methods to `User` and `Me`
2022-04-04 03:35:07 +04:00
Maybe Waffle
d91863e1c3
Add some tests
2022-04-04 03:00:53 +04:00
Waffle Maybe
d1cf0e4f52
Merge branch 'master' into hide_token_in_errors
2022-04-03 16:14:34 +04:00
Maybe Waffle
05603560e6
Give a name to a magic number and document it
2022-04-03 14:47:10 +04:00
Maybe Waffle
daec5ee13e
Hide bot token in errors
...
This fixes a potential[^1] security vulnerability -- if bot shows errors
from teloxide to the user & for some reason network error happened[^2]
the url of the request would be included in the error. Since TBA
includes bot token in the error this may lead to token leakage.
This commit fixes that issue by removing the token from the urls of
`reqwest::Error`, we try to only replace the token, but if we fail we
remove the whole url.
This can be tested by using a very low timeout value for the http
reqwest client:
```rust
let client = reqwest::Client::builder()
.timeout(std::time::Duration::from_millis(1))
.build()
.unwrap();
let bot = Bot::from_env_with_client(client).auto_send();
// see if the token is redacted when network error (timeout) happens
// while sending common requests
let _ = dbg!(bot.get_me().await);
// see if the token is redacted when network error (timeout) happens
// while downloading files ("path" is unimportant as the timeout is so
// low the request probably won't even be sent)
let _ = dbg!(bot.download_file_stream("path").next().await);
```
For me this gives the following result:
```text
[t.rs:26] bot.get_me().await = Err(
Network(
reqwest::Error {
kind: Request,
url: Url {
scheme: "https",
cannot_be_a_base: false,
username: "",
password: None,
host: Some(
Domain(
"api.telegram.org",
),
),
port: None,
path: "/token:redacted/GetMe",
query: None,
fragment: None,
},
source: TimedOut,
},
),
)
[t.rs:31] bot.download_file_stream("path").next().await = Some(
Err(
reqwest::Error {
kind: Request,
url: Url {
scheme: "https",
cannot_be_a_base: false,
username: "",
password: None,
host: Some(
Domain(
"api.telegram.org",
),
),
port: None,
path: "/file/token:redacted/path",
query: None,
fragment: None,
},
source: TimedOut,
},
),
)
```
Note that this commits parent is `d0be260` and not the current master
the master branch currently contains breaking changes (we'll need to
make a release from this brach directly).
[^1]: Note that there are recorded cases where the token got exposed.
[^2]: Note that this can be theoretically be controlled by the user when
sending/downloading bigger files.
2022-04-03 13:34:17 +04:00
Maybe Waffle
b3c0d00b7d
"override" mention
and tme_url
on Me
...
That's not **really** an override, but by adding an inherent methods
we "hide" methods from `Deref<Target = User>`, that allows us to return
non-option types from `me.mention()` and `me.tme_url()` -- bots must
always have usernames.
2022-04-02 22:56:32 +04:00
Maybe Waffle
df9ffe8918
Add Me::username
and Deref<Target = User>
impl for Me
2022-04-02 22:43:55 +04:00
Maybe Waffle
55f753a201
Add User::{tme_url, preferably_tme_url}
functions
2022-04-02 21:09:34 +04:00
Maybe Waffle
705083c2d9
Add UserId::{url, is_anonymous, is_channel, is_telegram}
functions
2022-04-02 20:59:41 +04:00
Waffle Maybe
1746be2b7f
Merge pull request #194 from teloxide/chat_id_refactor
...
Chat and user id refactor
2022-04-02 19:11:42 +04:00
Waffle Maybe
c250a9b327
Merge pull request #193 from teloxide/telergam
...
Fix a typo in documentation
2022-04-02 18:40:06 +04:00
Maybe Waffle
c2d2a15ef1
Split derives because rustfmt hates me
2022-04-02 18:13:32 +04:00
Maybe Waffle
71dee3b563
Use Into<ChatId>
in methods
2022-04-02 18:10:47 +04:00
Maybe Waffle
4fbec56674
Impl From<UserId>
for ChatId
and Recipient
2022-04-02 18:10:47 +04:00
Maybe Waffle
036c46caaa
reformat code a bit
2022-04-02 18:10:46 +04:00
Maybe Waffle
f2378935b7
Make chat id typed (add ChatId
)
...
Note that this is different from the previous `ChatId` (that was renamed
to `Recipient`), since it can't hold @channelusername.
Reason: same as w/ `UserId`
2022-04-02 18:10:46 +04:00
Maybe Waffle
41e09159a6
Make user id typed (add UserId
)
...
Reason: when user id is just an integer, it's easy to accidentally
use a "random" integer instead of actual user id, typed APIs make code
less prone to some mistakes.
This commit also fixes an issue when a wrong integer type was used for
`user_id` in `Contact`.
Another option that this addition unlocks is adding methods/implementing
foreign trait for `UserId`.
2022-04-02 18:10:46 +04:00
Maybe Waffle
0a1d73c223
Rename ChatId
=> Recipient
...
Reason: it isn't _really_ a chat id, it can also be a channel username.
2022-04-02 18:10:46 +04:00
Maybe Waffle
22cfffc704
Fix some more typos
2022-03-24 21:32:01 +04:00
Waffle Maybe
ecf90c8c05
Fix a typo in documentation
2022-03-24 17:51:34 +04:00
Maybe Waffle
3d69d96182
Fix chat unmark
2022-03-22 22:08:47 +04:00
Maybe Waffle
923be2221d
Add NotFound
error
2022-03-21 19:10:12 +04:00
Hirrolot
2c0748f3ae
Merge branch 'master' into with_payload
2022-03-20 08:08:52 -07:00
Maybe Waffle
d8e3c6ce42
Add WrongFileIdOrUrl
and FailedToGetUrlContent
errors
2022-03-18 14:21:55 +04:00
Maybe Waffle
c7e32fa247
Add HasPayload::with_payload_mut
function
...
`HasPayload::with_payload_mut` allows to easily apply multiple changes
to the payload without calling `payload_mut()` multiple times and
creating temporary variable for the request. e.g.:
```rust
// without `with_payload_mut`
{
let mut req = bot.set_webhook(url.clone());
req.payload_mut().certificate = certificate.take();
req.payload_mut().drop_pending_updates = drop_pending_updates;
req.send().await?;
}
// with `with_payload_mut`
bot
.set_webhook(url.clone())
.with_payload_mut(|payload| {
payload.certificate = certificate.take();
payload.drop_pending_updates = drop_pending_updates;
})
.send()
.await?
```
2022-03-18 14:13:38 +04:00
Waffle Maybe
0c5f9678d8
Merge pull request #185 from teloxide/revert_better_timeouts
...
Revert "better timeouts"
2022-03-07 20:16:53 +04:00
Maybe Waffle
5fb0a4787f
fix typos
2022-03-03 02:23:46 +03:00
Maybe Waffle
fbbb5c842b
Add User::is_telegram
2022-03-03 02:23:40 +03:00
Maybe Waffle
9eb51ad34b
fix clippy
2022-03-03 02:21:52 +03:00
Maybe Waffle
d5ad882999
fix typos
2022-03-03 01:45:41 +03:00
Maybe Waffle
812f6ef45e
Revert buggy "better timeouts"
2022-03-03 01:43:25 +03:00
mikhailantoshkin
686ec23b76
Add missing enum variants to the chat fucntion
2022-02-20 22:56:29 +05:00
Maybe Waffle
1d7825c97a
Prepare 0.4.2
release
2022-02-17 15:03:41 +03:00
Maybe Waffle
6bf204221f
Deprecate Message::chat_id
2022-02-17 14:51:00 +03:00
Maybe Waffle
3477f7eded
Fix sending quiz polls
2022-02-17 14:10:39 +03:00
Maybe Waffle
fb7710b838
Make GetUpdates
expose its timeout
via Payload::timeout_hint
2022-02-14 19:53:19 +03:00