I'm making a telegram bot and I want to add option of forwarding some info from miniapp to a chat. I decided to use window.open(url, '_blank'); and it worked fine until I tried it on my iPhone. Instead of forwarding I got Share (it's a big deal, I need exactly to forward a message). I have some ideas how to deal with it, but they are not user friendly. Do you have any suggestions here?
I have two simple parts: 1)app.py
from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup, WebAppInfo from telegram.ext import ApplicationBuilder, CommandHandler, MessageHandler, CallbackContext, filters from collections import defaultdict from credentials import BOT_TOKEN, WEBAPP_URL # Словарь для хранения чатов, куда пользователь переслал сообщение user_forwarded_chats = defaultdict(set) # Количество требуемых пересылок REQUIRED_FORWARDS = 5 async def start(update: Update, context: CallbackContext): # Запуск веб-приложения с кнопкой "Поделиться" keyboard = [ [InlineKeyboardButton("Поделиться", web_app=WebAppInfo(WEBAPP_URL))] ] reply_markup = InlineKeyboardMarkup(keyboard) await update.message.reply_text( "Перешлите сообщение 5 раз в разные чаты и получите награду.", reply_markup=reply_markup ) async def track_forwarded_message(update: Update, context: CallbackContext): if update.message.forward_from_chat: user_id = update.message.from_user.id chat_id = update.message.chat.id # Проверяем, пересылалось ли уже сообщение в этот чат if chat_id not in user_forwarded_chats[user_id]: user_forwarded_chats[user_id].add(chat_id) await update.message.reply_text( f"Сообщение переслано в {len(user_forwarded_chats[user_id])} из {REQUIRED_FORWARDS} уникальных чатов." ) if len(user_forwarded_chats[user_id]) >= REQUIRED_FORWARDS: await update.message.reply_text("Молодцы, вы выполнили условия!") # Сбрасываем счетчик после подтверждения выполнения задания user_forwarded_chats[user_id] = set() else: await update.message.reply_text( "Вы уже пересылали сообщение в этот чат. Перешлите его в другой чат." ) else: await update.message.reply_text( "Это не пересланное сообщение из чата. Пожалуйста, пересылайте сообщения в разные чаты." ) if __name__ == '__main__': application = ApplicationBuilder().token(BOT_TOKEN).build() application.add_handler(CommandHandler('start', start)) application.add_handler(MessageHandler(filters.ALL & ~filters.COMMAND, track_forwarded_message)) print("Бот запущен!") application.run_polling()
2)index.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Telegram Web App</title> <script> window.onload = function() { console.log("Page Loaded"); // Создаем кнопку "Share in Telegram" const shareButton = document.createElement('button'); shareButton.textContent = "Share in Telegram"; shareButton.style.fontSize = "16px"; shareButton.style.padding = "10px 20px"; shareButton.style.cursor = "pointer"; // Обработчик клика по кнопке shareButton.onclick = function() { console.log("Share Button Clicked"); // Открываем окно "Поделиться постом" в Telegram const postUrl = "https://t.me/dvachannel/143325"; const telegramShareUrl = `https://t.me/share/url?url=${encodeURIComponent(postUrl)}`; window.open(telegramShareUrl, '_blank'); }; // Добавляем кнопку на страницу document.body.appendChild(shareButton); }; </script> </head> <body> <h1>Hello, Telegram!</h1> </body> </html>
I'm using a simple link https://t.me/dvachannel/143325 to forward and it works fine on my laptop and android, but not on iPhone.
The above is the detailed content of telegram window.open(url, _blank); works strange on ios. For more information, please follow other related articles on the PHP Chinese website!