Возможно ли получить ссылку на топик группы в телеграм через айди группы и топика?
Пишу бота на aiogram3, который при заполнении заявки пользователем отправляет уведомление в группу админов. К этому сообщению должна цепляться инлайн-клавиатура с кнопками "Профиль" и "Топик" (если он создан). Нашел информацию, что ссылку можно получить в виде "t.me/[юзернейм группы]/[thread_id]", но у меня есть только ID группы, не юзернейм, больше найти ничего получилось.
Можно ли как-то получить ссылку на этот самый топик используя id группы?
Снизу приведу код для кнопки "Профиль", возможно есть что-то такое и под топики.
...
try:
buttons.append([InlineKeyboardButton(text='? Профиль',
url=f"tg://user?id={user_id}")])
except:
pass
...
Ответы (1 шт):
Для начала надо узнать ID пользователя, т.е telegram_id
@router.message(Command("start"))
async def start_handler(message: Message):
telegram_id = message.from_user.id
username = message.from_user.username or "Без имени"
first_name = message.from_user.first_name or "Без имени"
last_name = message.from_user.last_name or "Без имени"
await message.answer(
f"Привет! Твой Telegram ID: {telegram_id}\n"
f"Твоё имя: {first_name}\n"
f"Username: {username}\n"
f"Полные данные: {last_name}"
)
Потом данные отправляются в базу данных. Когда появляется новая запись - нужно отправить ее в чат с админами.
ADMIN_CHAT_ID = "номер чата"
bot = Bot(token="YOUR_BOT_TOKEN")
router = Router()
@router.message(Command("start"))
async def start_handler(message: types.Message):
user = message.from_user
telegram_id = user.id
keyboard = InlineKeyboardMarkup(
inline_keyboard=[
[InlineKeyboardButton(
text="? Профиль",
url=f"tg://user?id={telegram_id}"
)]
]
)
#отправли данные нового пользователя в чат
await bot.send_message(
chat_id=ADMIN_CHAT_ID,
text=(
"*Новый пользователь в боте!*\n\n"
f"*ID:* `{telegram_id}`\n"
f"*Имя:* {user.first_name or 'Не указано'}\n"
f"*Фамилия:* {user.last_name or 'Не указано'}\n"
f"*Username:* @{user.username or 'Не указан'}"
),
reply_markup=keyboard,
parse_mode="Markdown"
)
Надеюсь ответил на Ваш вопрос.