import asyncio from telegram import Update from telegram.constants import ChatType, ParseMode from telegram.ext import ContextTypes TTL_SEC = 20 async def _auto_delete(ctx: ContextTypes.DEFAULT_TYPE, chat_id: int, message_id: int, delay: int = TTL_SEC): try: await asyncio.sleep(delay) await ctx.bot.delete_message(chat_id=chat_id, message_id=message_id) except Exception: pass async def chat_id_cmd(update: Update, ctx: ContextTypes.DEFAULT_TYPE): chat = update.effective_chat if chat.type not in (ChatType.GROUP, ChatType.SUPERGROUP, ChatType.CHANNEL): await update.effective_message.reply_text("Эта команда работает в группе/канале.") return # Только админы могут увидеть ID (снижаем риск утечки) try: member = await ctx.bot.get_chat_member(chat.id, update.effective_user.id) if member.status not in ("administrator", "creator"): return # молча игнорируем для не-админов except Exception: return text = f"ID этого чата: `{chat.id}`\nСообщение удалится через {TTL_SEC} сек." try: msg = await update.effective_message.reply_text(text, parse_mode=ParseMode.MARKDOWN) ctx.application.create_task(_auto_delete(ctx, chat.id, msg.message_id, delay=TTL_SEC)) except Exception: pass