Разработчики мессенджера представили обновление для Telegram. В нем появились заявки на вступление в публичные группы, анимированные аватары, значки для подтвержденных аккаунтов, улучшенные боты и ускорилась работа самого мессенджера. Но обо всем поподробнее. Telegram заявил, что на сегодняшний день количество активных пользователей превысило 700 миллионов человек в месяц. Команда Telegram в этом месяце представила не только премиум подписку, но и разработала новинки для обычных пользователей.
По заявкам
Одним из новшеств стало внедрение заявок на вступление в публичные группы. Режим вступления по заявкам теперь могут подключать администраторы до того, как разрешить пользователям отправку сообщений в чат. Теперь попадая в группу пользователь сначала кликает на кнопку «подать заявку», после этого она отправляется на рассмотрение админу и только после он может либо дать доступ к написанию сообщений в группе, либо нет. Админы теперь даже могут лично написать участникам группы, например, рассказать, как нужно себя вести в группе.
Как сделать анимированную аватарку?
Аккаунт подтвержден
Теперь публичные люди и компании могут подтвердить подлинность своей группы или канала получив специальный значок. Он дает читателям понимание, что информация исходит из подтвержденного источника. Она видна не только в результатах поиска, но и в верхней части чата. Еще одно новшество — разработчики ботов могут разместить видео или графику о том, что умеет бот.
Сохраните в галерее
Заработала функция автоматического сохранения фото и видео в галерею телефона. Как утверждает Telegram, теперь можно включить или отключить сохранение в галерею отдельно для личных чатов, групп и каналов. Стали также доступны кнопки с помощью которых можно отключить уведомления, пометить переписку как прочитанную, а также закрепить или удалить чат.
Удобная загрузка
Telegram теперь дает возможность пользователям загружать большие фото, видео и другие файлы в том числе напрямую из сторонних приложений. Такие файлы не нужно теперь предварительно сохранять. При отправке для iOS таких файлов отныне появляется анимированная полоса загрузки.
Анимированная аватарка
Владельцы Mac теперь могут без труда создавать уникальные видеоаватары. Для этого необходимо выбрать подходящий стикер или эмодзи, а также добавить яркий градиентный фон. Это возможно для профильных видеогрупп и каналов.
Загрузка стабильна
В мессенджере помимо всего перечисленного было исправлено более 100 неточностей, ускорена работа, доработаны некоторые функции. Так, владельцы последних iPhone и iPad получат более плавные анимации, а обладатели Android-устройств — улучшенное качество аудио и видео в голосовых и видеосообщениях.
Как сделать анимированный фон в Телеграмме / Анимированные фоны в Telegram
Источник: linkbaza.com
Как превратить свою аватарку в Telegram в часы
Недавно сидел я в одном сообществе программистов в Telegram и заметил один очень любопытный профиль. Любопытным было следующее — на главном фото у него было изображено нынешнее время. Мне стало жутко интересно как он этого добился, и я решил во что бы то ни стало написать такую же программу.
До этого я часто работал с Telegram-ботами при помощи библиотеки PyTelegramBotAPI, поэтому предположил, что такая функция есть в API ботов. Наверняка, это было глупейшее предположение в моей жизни, т.к. фото было на аватарке профиля именно пользователя, а не бота — и вскоре я в этом убедился, не найдя ни одной предпосылки к возможности изменить фото профиля.
Я начал сёрфить интернет и наткнулся на довольно удобный инструмент — telethon. Он как раз и позволял мне заходить в Telegram как юзер, а не как бот. Что ж, полагаю это был самый первый и самый большой шаг к цели. Далее давайте разберем как же именно воссоздать «часы» на нашей аватарке.
Шаг первый. Получить доступ к входу в Telegram из кода
Переходим по ссылке, вводим номер телефона, после чего получаем код подтверждения. Подробнее об этом написано тут. Итак, мы получаем оттуда две важные для нас вещи — это api_id и api_hash. Создаем файл config.py и вводим туда следующий код:
api_id = api_hash =
Теперь создаем файл main.py в котором пишем:
from telethon import TelegramClient, sync from .config import *
Важно, чтобы main.py и config.py были на одном файловом уровне, т.е. в одной папке иначе строка from .config import * даст ошибку. Класс TelegramClient — это именно то, что позволит нам войти в Telegram в качестве обычного пользователя. Далее в этом же файле пишем следующее:
client = TelegramClient(, api_id, api_hash) client.start()
Таким образом, можно считать, мы залогинились в Telegram. ИМЯ СЕССИИ можете выбрать любое, на свое усмотрение (например, «ананас»). Итак, мы подключились к телеграму. Теперь пора думать о фотографиях…
Шаг второй. Создаем источник фотографий с указанием времени
Пожалуй, этот шаг явился самым легким для меня, т.к. я уже долгое время разрабатывал различное ПО, использующее компьютерное зрение, а следовательно, работа с изображениями стала чем-то обыденным. Тут все просто — устанавливаем библиотеку opencv, позволяющую творить чудеса с фотографиями. Создаем файл utils.py и пишем в ней:
def convert_time_to_string(dt): return f»:»
Данная функция нам нужна, чтобы на фотографии было указано время в формате Ч: ММ(были и другие способы сделать это, но я предпочел именно этот).
Итак, приступаем к созданию самих фотографий. Создаем файл generate_time_images.py и пишем в нем:
from .utils import * import cv2 import numpy as np from datetime import datetime, timedelta
Этих библиотек должно хватить нам для создания фотографий с указанием времени. Далее пишем функцию для получения черного фона, на котором мы будем писать время:
def get_black_background(): return np.zeros((500, 500))
Теперь нужно будет пройтись циклом по каждой минуте в сутках и сгенерировать фотографию с указанием времени. Заранее создайте папку time_images/ куда будете сохранять фотографии. Итак, пишем:
start_time = datetime.strptime(«2019-01-01», «%Y-%m-%d») # Можете выбрать любую дату end_time = start_time + timedelta(days=1) def generate_image_with_text(text): image = get_black_background() font = cv2.FONT_HERSHEY_SIMPLEX cv2.putText(image, text, (int(image.shape[0]*0.35), int(image.shape[1]*0.5)), font, 1.5, (255, 255, 0), 2, cv2.LINE_AA) return image while start_time < end_time: text = convert_time_to_string(start_time) image = generate_image_with_text(text) cv2.imwrite(f»time_images/.jpg», image) start_time += timedelta(minutes=1)
Для создания колеекции фотографий осталось сделать только одно — запустить generate_time_images.py. После запуска мы видим, что в папке time_images/ появилось множество фотографий. Должны получиться примерно такие фотографии:
Шаг третий. Обновляем фото каждую минуту
У telethon есть очень удобная штука — называется UploadProfilePhotoRequest. Импортируем ее в наш ранее написанный main.py:
from telethon.tl.functions.photos import UploadProfilePhotoRequest, DeletePhotosRequest from datetime import datetime from .utils import *
Разумеется, мы не должны обновлять аватарку в каждый момент времени — достаточно делать это раз в минуту. Для этого мы должны знать момент, когда заканчивается старая минута и начинается новая — именно в этот момент мы и поменяем фотку. Пишем еще одну небольшую функцию в utils.py:
def time_has_changed(prev_time): return convert_time_to_string(datetime.now()) != prev_time
Да, да, мы передаем в нее строку со временем предыдущего обновления аватарки. Конечно, и тут были другие способы реализации, но писал я это все «на скорую руку», поэтому сильно об оптимизации не задумывался. Продолжаем заполнять наш main.py:
prev_update_time = «» while True: if time_has_changed(prev_update_time): prev_update_time = convert_time_to_string(datetime.now()) client(DeletePhotosRequest(client.get_profile_photos(‘me’))) file = client.upload_file(f»time_images/.jpg») client(UploadProfilePhotoRequest(file))
DeletePhotosRequest нам нужен для того, чтобы удалить предыдущие аватарки, чтобы создавался эффект, что мы не добавляем новое фото — оно меняется само собой. Для того, чтобы не перегружать процессор, можно добавить time.sleep(1) в конец цикла(разумеется, импортировав сперва time.py).
Готово! Запустите main.py и ваша аватарка превратится в часы. Как более оригинальный вариант, можете попробовать изменить текст на фотках, например, на такой:
UPDATE!
С момента написания данной статьи библиотека telethon стала полностью асинхронной, что вызвало необходимость полностью пересмотреть методы вызова функций в исходниках. В итоге я сел за код и кроме того, что переписал все через async-await на основе asyncio еще и оптимизировал пару вещей. К примеру, теперь не нужно создавать кучу файлов на жестком диске для их отправления — это было огромной и бесполезной тратой ресурсов, больше не буду так делать..
Вот ссылка на репозиторий. Необходимые инструкции по установке уже там.
Источник: habr.com