Commit graph

318 commits

Author SHA1 Message Date
puuuuh
c7f38981a4
Apply suggestions from code review
Co-authored-by: Waffle Maybe <waffle.lapkin@gmail.com>
2023-02-06 13:04:00 +03:00
Maybe Waffle
74e32a725d Add tests for response processing 2023-02-06 12:20:51 +04:00
Maybe Waffle
2221116d9c Actually provide meaningful errors 2023-02-06 12:20:51 +04:00
Maybe Waffle
cbbfc5b3d1 Rewrite hacks for reliable Update deserialization 2023-02-06 12:20:46 +04:00
puh
27ef3409c2
add macro to implement Deserialize on ApiError enum 2023-02-05 17:15:39 +03:00
Sima Kinsart
6909353500
Merge pull request #835 from teloxide/sync-update-kinds
Synchronize places that use update kinds
2023-02-05 13:16:31 +06:00
Waffle Maybe
fb48943871
Merge pull request #836 from teloxide/multiversion
Automatically use `path` versions for development
2023-02-04 03:52:35 +04:00
Maybe Waffle
8e435c9e7f Add a reminder to update teloxide's Cargo.toml when adding features to core 2023-02-03 17:12:57 +04:00
Maybe Waffle
fc2b873c94 Fix deserialization of invalid token error 2023-02-03 16:59:39 +04:00
Maybe Waffle
1974341dbd Update changelogs 2023-02-03 16:53:36 +04:00
Maybe Waffle
8baf8af8c1 Document Update::{user, chat} 2023-02-03 16:41:14 +04:00
Maybe Waffle
b5bd147c7c Fix Update::user (return Some on some forgotten variants)
The following update types now are handled in `Update::user`:
- chat join requests
- chat members
- channel post
2023-02-03 16:36:01 +04:00
Maybe Waffle
e97ac18060 Add notes reminding to update places after updating updates 2023-02-03 16:11:20 +04:00
Waffle Maybe
6c6ae76dec
Merge pull request #825 from teloxide/image_process_failed_error
Add `ApiError::ImageProcessFailed`
2023-02-03 14:19:07 +04:00
Maybe Waffle
2ea918e050 fix fmt 2023-02-01 17:14:49 +04:00
Summer Gram
932bfa64fe
Add ApiError::RequestEntityTooLarge
Occurs when bot tries to upload a file which is larger than 50 MB using multipart/form-data.
2023-01-31 22:49:11 +08:00
Maybe Waffle
da91cc4689 Add ApiError::ImageProcessFailed 2023-01-31 12:14:22 +04:00
Maybe Waffle
11defdcffb Remove 6-th keyword from teloxide-core's Cargo.toml 2023-01-17 22:35:47 +04:00
Maybe Waffle
dde56e5fae Prepare for the release of teloxide-core 2023-01-17 20:29:41 +04:00
Maybe Waffle
b626b3240c Fix docs 2023-01-14 20:51:20 +04:00
Maybe Waffle
950a594e78 Update supported TBA version in docs 2023-01-14 20:50:58 +04:00
Maybe Waffle
428285ef8e Add a FIXME concerning message getters 2023-01-14 20:22:24 +04:00
Maybe Waffle
7c2cf65988 fix a link in schema 2023-01-14 20:20:32 +04:00
Maybe Waffle
be7b259adf Fix ...Forum... messages deserialization 2023-01-14 20:18:09 +04:00
Maybe Waffle
f624b9a996 TBA 6.4 methods 2023-01-14 20:17:14 +04:00
Maybe Waffle
e86184fcd0 FIX codegen, again 2023-01-14 18:46:53 +04:00
Maybe Waffle
01bc5a990b ty fixes 2023-01-14 18:39:13 +04:00
Maybe Waffle
f5afbf2188 doc fix 2023-01-14 18:23:13 +04:00
Maybe Waffle
58fafd4280 TBA 6.4 type changes 2023-01-14 18:21:28 +04:00
Maybe Waffle
644bd6e7f4 fixup supported TBA version in docs 2023-01-14 17:19:34 +04:00
Waffle Maybe
c5cb33c242
Merge pull request #800 from Veetaha/feat/chat-member-overhaul
Overhaul `teloxide_core::types::chat_member` module
2023-01-13 10:58:29 +04:00
Veetaha
93dd8eb650 Fix and improve the changelog according to review feedback 2023-01-13 01:22:34 +01:00
Veetaha
52666265c1 Replaced issue reference with full URL 2022-12-29 19:03:34 +01:00
Waffle Maybe
b826c3a34b
Merge pull request #804 from teloxide/docccc
Fix documentation build
2022-12-29 14:09:25 +04:00
Maybe Waffle
bcac39a276 Fix clippy 2022-12-29 04:04:50 +04:00
Maybe Waffle
e4fba3345f suppress rustdoc warning about "<bot" in payload docs 2022-12-29 04:04:50 +04:00
Maybe Waffle
4cae2c93cb Use new format! syntax where possible
(fix clippy)
2022-12-29 04:04:50 +04:00
Maybe Waffle
867adbb20b Update scrape examples options 2022-12-29 00:31:17 +04:00
Maybe Waffle
0253979e36 update rust version 2022-12-28 23:16:00 +04:00
Veetaha
36d4ecc884 Improve changelog 2022-12-27 19:59:42 +01:00
Veetaha
c677da42ad Add changelog entries 2022-12-27 19:51:02 +01:00
Veetaha
36da9f1ed9 Overhaul teloxide_core::types::chat_member module 2022-12-27 19:41:34 +01:00
Waffle Maybe
62ff003720
Merge pull request #789 from teloxide/tba63
TBA 6.3
2022-12-17 01:07:58 +04:00
Sima Kinsart
bb6dd81f6a
Merge branch 'dev' into const-must-use 2022-12-09 19:17:55 +06:00
Maybe Waffle
7ea428a21c Properly gate tests, so that cargo test works with any features 2022-12-06 16:06:35 +04:00
Maybe Waffle
a9a2610a03 *actually* fix codegen 2022-12-05 23:36:41 +04:00
Maybe Waffle
0dd44fe739 TBA 6.3: methods 2022-12-05 19:25:11 +04:00
Maybe Waffle
eeb06337ee fix codegen (truncate files) 2022-12-05 19:24:49 +04:00
Maybe Waffle
976100e3ec TBA 6.3: types 2022-12-05 19:23:45 +04:00
Maybe Waffle
dfb22450fc Refactor Cargo.tomls 2022-11-28 22:14:49 +04:00
Hirrolot
762ab2f5e3 Make more functions #[must_use] 2022-11-17 14:54:40 +06:00
Hirrolot
7cd36d9c40 Make more functions const 2022-11-17 14:42:36 +06:00
Waffle Maybe
9095aaa839
Merge pull request #764 from Veetaha/feat/add-missing-restricted-fields
Add missing fields for `Restricted` chat member
2022-11-16 17:19:36 +04:00
Veetaha
d0b71c358e Move changelog entries into teloxide-core's changelog file 2022-11-14 23:20:50 +01:00
Veetaha
170941e797 Improve spacing 2022-11-14 23:16:07 +01:00
Veetaha
1c6fc4aae0 Update the docs of is_present() method 2022-11-14 23:13:33 +01:00
Waffle Maybe
63b6f1841a
Merge pull request #765 from teloxide/remove_use_of_deprecated_fn
Remove use of deprecated fn
2022-11-14 22:23:55 +04:00
Maybe Waffle
5f0df0577f Remove use of deprecated chrono::NaiveDateTime::from_timestamp 2022-11-14 17:55:11 +04:00
Veetaha
c65996eb75 Update is_present() to take is_member into account 💪 2022-11-12 01:39:59 +01:00
Veetaha
30439d6d28 Add missing fields for Restricted chat member
These fields are present in the docs, and I tested it manually by calling the `get_chat_member` method with the changed `teloxide-core` code that parsing still works fine for the `Restricted` chat member.

There are however some potential logic bugs here described bellow. I fixed some of them, but others are still outstanding.

\# Logic bugs

\## Shared permission fields in `Administrator` and `Restricted`

The current code of `teloxide-core` at the time of this writing doesn't take into account the shared permission fields of `Administrator` and `Restricted` because just were no such fields in `Restricted` struct. This bug is fixed by this PR.

\## Deceiving behavior of `ChatMemberKind::Member`

The existing getter methods of `ChatMember` assume that if the `ChatMemberKind` is `Member`, then the member has all rights for all fields of `Restricted` struct.

And there is also a similar problem with `Administrator` struct.

The existing getter methods of `ChatMember` assume that if the `ChatMemberKind` is `Member`, then the member has no rights for all fields of `Administrator` struct.

This isn't always true. Regular members *may or may not have* `can_invite_users` permission, for example. This is determined by the default chat parmissions. See bellow.

\# General decieving behavior of permission getters

The default chat permissions seem to override any cofigurations of `Restricted` chat members.
For example, if the `Restricted` chat member has `can_invite_users` set to `true`, but the default chat permissions have `can_invite_users` set to `false`, then the effective `can_invite_users` permission of such a user is `false` (verified experimentally).

Therefore, the getters for the permission fields of the `ChatMember` type actually don't make sense. They don't show the effective permissions of the user. Maybe we could make that clear in their docs, but the problem is that these getters don't have enough context to decide what to return for regular `ChatMemberKind::Member`.

I am not sure how to proceed here. For example, these getters could return `Option` values, and always return `None` for `ChatMemberKind::Member`.

I didn't fix that bug in this PR, because I believe it requires a more careful consideration, larger and potentially breaking changes, that I am not ready to do.

\# Intentionally left as not in scope of this PR

Telegram added topics feature recenenty, and consequently they added `can_manage_topics` field both to `Administrator` and `Restricted` structs. This field is not present in the current code of `teloxide-core` at the time of this writing, and I think it should be added in a separate PR that covers topics API as a whole.

Also, one discrapancy with the new `can_manage_topics` field is with its type and documentation.

Here is how this field looks like in `ChatMemberAdministrator` **and** `ChatAdministratorRights`:

```
can_manage_topics	Boolean	Optional. True, if the user is allowed to create, rename, close, and reopen forum topics; supergroups only
```

Here is how this field looks like in `ChatMemberRestricted`:

```
can_manage_topics	Boolean	True, if the user is allowed to create forum topics
```

Here is how this field looks like in `ChatPermissions`:

```
can_manage_topics	Boolean	Optional. True, if the user is allowed to create forum topics. If omitted defaults to the value of can_pin_messages
````

There is something subtle between the semantics of `can_manage_topics` for regular users and administrators according to the difference in their documentation. I didn't dig into that rabbit hole, so I intentionally didn't include topics feature changes in this PR.
2022-11-09 03:08:52 +01:00
manorom
4f0a64e31e Derive Display Trait for MessageId type 2022-11-08 15:24:54 +01:00
Maybe Waffle
178a9bcc2f CI attempt №2 2022-11-07 20:00:06 +04:00
Maybe Waffle
31e73a848b CI attempt №1 2022-11-07 19:15:30 +04:00
Maybe Waffle
5c59c6a886 link licenses 2022-11-07 16:49:58 +04:00
Maybe Waffle
05889b3797 Merge rust-toolchain.tomls 2022-11-07 16:38:57 +04:00
Maybe Waffle
1d84b2b76a Merge rustfmt.tomls 2022-11-07 16:13:29 +04:00
Maybe Waffle
1a56c6fc77 Move all media to media/ 2022-11-01 18:30:52 +04:00
Maybe Waffle
71dd29b1ac move teloxide-core to crates/ 2022-11-01 16:33:54 +04:00