Многие люди используют эмодзи статус в телеграмме для обозначения статуса их работы Будь это свободен, занят или готов ответить Я тоже решил начать это делать и без заморочек сделать скрипт для автоматики... Итак... Всем привет! Сегодня напишем простой, но полезный скрипт Что, зачем и почему? Многие люди, у который взаимодействие с клиентами происходит в ТГ пользуются эмодзи статусами для обозначения их статуса (тавтология ) К примеру, есть крутой кодер и ему пишет 100500 людей в день. У него есть определенный график работы в профиле, но всем по**й на это. Для этого он делает вступительное сообщение с обозначением всех статусов и люди начинают обращать на это внимание. Но вот незадача! Каждый раз менять вручную статус - не лучшее решение. Мы напишем софт, который будет отслеживать клавиши и ставить нужный статус Что я буду использовать во время разработки? Т.к. лично я перескакиваю с Windows на Linux, я буду использовать кроссплатформенную библиотеку для обработки клавиш keyboard Для работы с ТГ - Pyrogram А для работы внутри проекта предпочитаю Poetry. Инициализация проекта Вам необходимо установить Poetry для удобной работы с пакетами и виртуальными окружениями pip3 install poetry Code pip3 install poetry После чего, в вашей папке, где будете хранить проект, введите poetry init Code poetry init Там по инструкции следует все ввести, где спрашивает про библиотеки, вводите варианты, которые ввел выше. Вот такой pyproject.toml у меня вышел [tool.poetry] name = "telegramstatusprogram" version = "0.1.0" description = "" authors = ["Ivan********* *******@gmail.com>"] readme = "README.md" [tool.poetry.dependencies] python = "^3.11" keyboard = "^0.13.5" Pyrogram = "^2.0.106" [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" Code [tool.poetry] name = "telegramstatusprogram" version = "0.1.0" description = "" authors = ["Ivan********* *******@gmail.com>"] readme = "README.md" [tool.poetry.dependencies] python = "^3.11" keyboard = "^0.13.5" Pyrogram = "^2.0.106" [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" Написание функций для самой замены статуса Для замены статуса у аккаунты в API Телеграма есть метод Т.к мы пишем все на Pyrogram, можно узнать, какая функция кидает на данный метод запрос from pyrogram import types await app.set_emoji_status(types.EmojiStatus(custom_emoji_id=1234567890987654321)) Python from pyrogram import types await app.set_emoji_status(types.EmojiStatus(custom_emoji_id=1234567890987654321)) Вот вам и самая главная функция. Для создания app, вам требуется класс Client, который выступает самим клиентом ТГ Вот код который я написал для инициализации клиента from pyrogram import Client, types app = Client( name="StatusSwitcher", api_id=12345, # Сюда вы вставляете свой API_ID api_hash="cjndsjkcnksndcjknskcd" # Сюда API_HASH ) Python from pyrogram import Client, types app = Client( name="StatusSwitcher", api_id=12345, # Сюда вы вставляете свой API_ID api_hash="cjndsjkcnksndcjknskcd" # Сюда API_HASH ) Забыл) Для получения этих данный вам требуется зайти на https://my.telegram.org/ и там будут ваши данные Я написал главный функционал, вот так все выглядит from pyrogram import Client, types # импорт библиотек BUSY = 12345 # айди эмодзи занятости WORK = 23456 # айди эмодзи работы FIFTY_FIFTY = 88388 # айди эмодзи 50/50 работы app = Client( name="StatusSwitcher", api_id=12345, # Сюда вы вставляете свой API_ID api_hash="cjndsjkcnksndcjknskcd" # Сюда API_HASH ) # создаем объект класса async def switch_emoji(emoji_id: int): # функция для установки статуса await app.set_emoji_status( types.EmojiStatus(custom_emoji_id=emoji_id) ) Python from pyrogram import Client, types # импорт библиотек BUSY = 12345 # айди эмодзи занятости WORK = 23456 # айди эмодзи работы FIFTY_FIFTY = 88388 # айди эмодзи 50/50 работы app = Client( name="StatusSwitcher", api_id=12345, # Сюда вы вставляете свой API_ID api_hash="cjndsjkcnksndcjknskcd" # Сюда API_HASH ) # создаем объект класса async def switch_emoji(emoji_id: int): # функция для установки статуса await app.set_emoji_status( types.EmojiStatus(custom_emoji_id=emoji_id) ) Самое важное я написал. Приступим к получению ID эмодзи Делаю лютый костыль для получения ID эмодзи Это покажется пиздец как костыльно, но метод рабочий Лично я решил сделать бота и написать ему все нужные эмодзи и дернуть по запросу данные сообщения Ниже находится токен бота Для получения обновлений бота, есть запрос, который можно прям из браузера вытащить Результат https://api.telegram.org/bot<ЗАМЕНИТЕ НА ТОКЕН ВАШЕГО БОТА>/getUpdates Отправил эмодзи и получил все айдишники Есс... Айди эмодзи находятся по порядку Замените айди в коде Продолжаем писать код Я поменял ID, стартанул клиент и вызвал функцию from pyrogram import Client, types import asyncio BUSY = 5339233635620899144 # айди эмодзи занятости WORK = 5339135753316222622 # айди эмодзи работы FIFTY_FIFTY = 5339286072876614251 # айди эмодзи 50/50 работы app = Client( name="StatusSwitcher", api_id=26, # Сюда вы вставляете свой API_ID api_hash="свыотсолтылотслоыт" # Сюда API_HASH ) app.start() def switch_emoji(emoji_id: int): app.set_emoji_status( types.EmojiStatus(custom_emoji_id=emoji_id) ) switch_emoji(BUSY) Python from pyrogram import Client, types import asyncio BUSY = 5339233635620899144 # айди эмодзи занятости WORK = 5339135753316222622 # айди эмодзи работы FIFTY_FIFTY = 5339286072876614251 # айди эмодзи 50/50 работы app = Client( name="StatusSwitcher", api_id=26, # Сюда вы вставляете свой API_ID api_hash="свыотсолтылотслоыт" # Сюда API_HASH ) app.start() def switch_emoji(emoji_id: int): app.set_emoji_status( types.EmojiStatus(custom_emoji_id=emoji_id) ) switch_emoji(BUSY) Уже супер! Статус меняется и можно прикручивать нажатие клавиш! Обработка нажатия клавиш Библиотека keyboard имеет несколько методов распознавания нажатия import keyboard # Делаем жосткий хоткей keyboard.add_hotkey('space', lambda: print('space was pressed!')) keyboard.wait() # Ожидаем нажатие keyboard.wait('space') print('space was pressed! Waiting on it again...') # Самый нормальный в использовании с асинхроном if keyboard.is_pressed("alt+space"): print("alt n' space") Python import keyboard # Делаем жосткий хоткей keyboard.add_hotkey('space', lambda: print('space was pressed!')) keyboard.wait() # Ожидаем нажатие keyboard.wait('space') print('space was pressed! Waiting on it again...') # Самый нормальный в использовании с асинхроном if keyboard.is_pressed("alt+space"): print("alt n' space") Ну и соответственно я выбрал последний вариант и написал функцию main() async def main(): await app.start() # Стартует наш клиент while True: # Запускаем цикл if keyboard.is_pressed("alt+shift+B"): # Обработка Alt + Shift + B await switch_emoji(BUSY) elif keyboard.is_pressed("alt+shift+W"): # Обработка Alt + Shift + W await switch_emoji(WORK) if keyboard.is_pressed("alt+shift+F"): # Обработка Alt + Shift + F await switch_emoji(FIFTY_FIFTY) asyncio.run(main) # Запуск программы Python async def main(): await app.start() # Стартует наш клиент while True: # Запускаем цикл if keyboard.is_pressed("alt+shift+B"): # Обработка Alt + Shift + B await switch_emoji(BUSY) elif keyboard.is_pressed("alt+shift+W"): # Обработка Alt + Shift + W await switch_emoji(WORK) if keyboard.is_pressed("alt+shift+F"): # Обработка Alt + Shift + F await switch_emoji(FIFTY_FIFTY) asyncio.run(main) # Запуск программы Последний штрих (соединение и кастомизация) Ну лично мне такие хоткеи самые удобные from pyrogram import Client, types import keyboard import asyncio BUSY = 5339233635620899144 # айди эмодзи занятости WORK = 5339135753316222622 # айди эмодзи работы FIFTY_FIFTY = 5339286072876614251 # айди эмодзи 50/50 работы app = Client( name="StatusSwitcher", api_id=2246, # Сюда вы вставляете свой API_ID api_hash="154стлыолывтс27baa8" # Сюда API_HASH ) async def switch_emoji(emoji_id: int): await app.set_emoji_status( types.EmojiStatus(custom_emoji_id=emoji_id) ) async def main(): await app.start() while True: if keyboard.is_pressed("alt+shift+B"): await switch_emoji(BUSY) elif keyboard.is_pressed("alt+shift+W"): await switch_emoji(WORK) if keyboard.is_pressed("alt+shift+F"): await switch_emoji(FIFTY_FIFTY) asyncio.run(main()) Python from pyrogram import Client, types import keyboard import asyncio BUSY = 5339233635620899144 # айди эмодзи занятости WORK = 5339135753316222622 # айди эмодзи работы FIFTY_FIFTY = 5339286072876614251 # айди эмодзи 50/50 работы app = Client( name="StatusSwitcher", api_id=2246, # Сюда вы вставляете свой API_ID api_hash="154стлыолывтс27baa8" # Сюда API_HASH ) async def switch_emoji(emoji_id: int): await app.set_emoji_status( types.EmojiStatus(custom_emoji_id=emoji_id) ) async def main(): await app.start() while True: if keyboard.is_pressed("alt+shift+B"): await switch_emoji(BUSY) elif keyboard.is_pressed("alt+shift+W"): await switch_emoji(WORK) if keyboard.is_pressed("alt+shift+F"): await switch_emoji(FIFTY_FIFTY) asyncio.run(main()) Вот так выглядит полная программа, просто и со вкусом Если вы захотели поменять хоткеи, пользуйтесь докой - https://github.com/boppreh/keyboard Для запуска в терминал введите poetry run py app.py (Windows) poetry run python3 app.py (etc.) При входе вам потребуется указать номер телефона, ввести код из ТГ и пароль. После чего ваша программа готова к использованию! Ну... вот и все! Спасибо за прочтение статьи, буду рад ответить на вопросы До скорого