ilyalatt / Telega

C# Telegram MTProto Client
https://ilyalatt.github.io/Telega/
MIT License
58 stars 15 forks source link

1 Января 2022 Проблема #77

Closed Karmageddonium closed 2 years ago

Karmageddonium commented 2 years ago

Я знаю, что автор репозитория русскоязычный поэтому пишу на русском)

Являюсь юзером этой превосходной либы и недавно получил сообщение такого характера от телеги:


Уважаемый разработчик,

Популярность Telegram продолжает расти по всему миру, в том числе и благодаря Вашему неофициальному приложению. Если приложение основано на Вашем собственном коде, Вам необходимо внести два изменения, чтобы пользователи могли продолжать им пользоваться. Эти изменения уже поддержаны в открытом коде официальных приложений Telegram, так что если Ваше приложение опирается на актуальную версию одного из них, то дополнительных действий не потребуется.

Поддержка int64 для ID В связи с быстрым ростом Telegram переходит с 32-битных на 64-битные ID, чтобы пользователи могли и дальше создавать миллиарды новых учетных записей, групп, каналов и ботов. Необходимо как можно скорее поддержать новые ID в Вашем приложении, чтобы оно продолжило работать корректно.

Для этого, пожалуйста, убедитесь, что приложение поддерживает 133 слой API, опубликованный в сентябре: https://core.telegram.org/api/layers#layer-133

Рекламные сообщения Чтобы покрывать расходы, которые увеличиваются вместе с числом пользователей, Telegram разработал рекламные сообщения (https://promote.telegram.org/) – платный инструмент для продвижения каналов и ботов с учетом заботы о конфиденциальности пользователей. Большинство сторонних разработчиков уже внедрили поддержку рекламных сообщений Telegram в свои приложения.

До 1 января 2022 мы просим Вас убедиться, что Ваше приложение поддерживает и корректно отображает рекламные сообщения. К сожалению, Telegram не сможет взять на себя расходы по поддержке приложений, в которых не отображаются рекламные сообщения, и будет вынужден отключить таким приложениям доступ к API.

Необходимая техническая документация: https://core.telegram.org/api/sponsored-messages

Использование Telegram API останется бесплатным для всех разработчиков. Мы будем признательны за понимание и надеемся, что Telegram и Ваше приложение смогут и дальше предоставлять людям надежный и безопасный способ связи.

Подробнее о рекламных сообщениях: https://t.me/durov_russia/35

Команда Telegram

Планируется ли до этого срока внести какие-то изменения чтобы библиотека внезапно не перестала работать?

ilyalatt commented 2 years ago

Добрый день. Сейчас я не занимаюсь библиотекой, поэтому изменения минимальные. Я обновил версию API до 135. Попробуйте 0.5.0-preview004. Я не тестировал изменения, надеюсь, поменялся лишь интерфейс. Насчёт того, как нужно работать с каналами сейчас.

Each time the user opens a channel, channels.getSponsoredMessages should be called to receive sponsored messages available for this channel. The result should be cached for 5 minutes. Once the entire text is shown on the screen (excluding the button), channels.viewSponsoredMessage should be called with the random_id of this sponsored message.

Можно будет добавить вспомогательные функции в TelegramClientChannels, а пока что можно использовать код вида

var sponsoredMessages = await tg.Call(new GetSponsoredMessages(channel));
var selectedSponsoredMessage = sponsoredMessages.Messages.First();
await tg.Call(new ViewSponsoredMessage(
    channel: channel,
    randomId: selectedSponsoredMessage.RandomId
));
Karmageddonium commented 2 years ago

Большое спасибо за обновление и за саму библиотеку.

Было бы очень круто, если бы вы выложили коротенькую хотя бы инструкцию, как пользоваться генератором дтошек, то есть вот вы сейчас обновили версию до 135 и желательно было бы получить инструкцию по этому процессу; у меня получилось сгенерировать нужные файлы для новой версии, но не получилось их встроить в сам проект телеги, было много косяков которые я решил что руками поправить не смогу и написал сюда. Потратил вчера часа три на это и понял что дохлый номер.

Это позволило бы вам в будущем просто получить пул реквест с изменениями)

ilyalatt commented 2 years ago

Ну да, API телеги в этом плане неприятный, много изменений, ломающих совместимость) Инструкций по изменениям, увы, нет, иногда приходится читать изменения кода в самой телеге. В этот раз вышло не так плохо. А насчёт документации самой библиотеки и её релизации вы правы, всё мутно. Да и сама реализация местами чрезмерно усложнённая, очень долго ждёт рефакторинга) Пока что, увы, не до этого.

Karmageddonium commented 2 years ago

Опишите хотя бы как пользоваться генератором и с какими параметрами и как его запускать и как далее вы применяете результаты работы генератора. Хотя бы на примере последних изменений. Я думаю этого будет достаточно для понимания и исправления критичных вещей.

ilyalatt commented 2 years ago

Сам генератор вызывается автоматически при билде проекта Telega. Для обновления схемы обычно достаточно поменять константы Layer и CommitHash. Чтобы их достать, можно зайти сюда, открыть список коммитов, найти коммит вида Update API scheme on layer 135., и скопировать хеш. Сейчас расширю комментарий в Generator.cs, чтобы было проще найти.

ilyalatt commented 2 years ago

https://github.com/ilyalatt/Telega/commit/082765d7ab8130a1e18960a313741ccee47c9ffd

Karmageddonium commented 2 years ago

Благодарствую.

mediaexplorer74 commented 2 years ago

Сам генератор вызывается автоматически при билде проекта Telega. Для обновления схемы обычно достаточно поменять константы Layer и CommitHash. Чтобы их достать, можно зайти сюда, открыть список коммитов, найти коммит вида Update API scheme on layer 135., и скопировать хеш. Сейчас расширю комментарий в Generator.cs, чтобы было проще найти.

Здравствуйте. Спасибо за Ваш труд. Один только вопрос: Ваша библиотека самодостаточная или, как и TDSharp, завязана на весьма нетривиальной в плане кросс-платформенной компиляции штуковине tdlib?

ilyalatt commented 2 years ago

Здравствуйте. Спасибо за Ваш труд. Один только вопрос: Ваша библиотека самодостаточная или, как и TDSharp, завязана на весьма нетривиальной в плане кросс-платформенной компиляции штуковине tdlib?

Добрый день. В этом плане самодостаточная. Nuget. На данный момент самая стабильная и актуальная версия 0.5.0-preview005, несмотря на суффикс preview.

mediaexplorer74 commented 2 years ago

Здравствуйте. Спасибо за Ваш труд. Один только вопрос: Ваша библиотека самодостаточная или, как и TDSharp, завязана на весьма нетривиальной в плане кросс-платформенной компиляции штуковине tdlib?

Добрый день. В этом плане самодостаточная. Nuget. На данный момент самая стабильная и актуальная версия 0.5.0-preview005, несмотря на суффикс preview.

Ух ты, такую огромную телегу (воз) дел проделали. Вы гений. Мечты через }{amarin Forms Телегу на Андроид натравить или айОс ) Или MAUI