Вообще, как вариант, если бот работает вот так без лонгполлинга, то можно получить последние апдейты, там уже циклом проходим по всем апдейтам, и если в нём есть поле pinned_message + совпадают параметры, то удаляем его
if pinResponse:
updates = requests.get(f'https://api.telegram.org/bot{botToken}/getUpdates', params={'allowed_updates': 'message'}).json()
for update in updates['result']:
if update['message'].get('pinned_message'):
if update['message']['pinned_message']['message_id'] == messageId and update['message']['chat']['id'] == chatId:
requests.post(f'https://api.telegram.org/bot{botToken}/deleteMessage', json={'chat_id': chatId, 'message_id': update['message']['message_id']})