Heim >Backend-Entwicklung >Python-Tutorial >Telegramm window.open(url, _blank); Funktioniert seltsam auf iOS
Ich erstelle einen Telegram-Bot und möchte die Option hinzufügen, einige Informationen von der Miniapp an einen Chat weiterzuleiten. Ich habe mich für window.open(url, '_blank'); entschieden. und es hat gut funktioniert, bis ich es auf meinem iPhone ausprobiert habe. Anstelle der Weiterleitung habe ich „Teilen“ erhalten (das ist eine große Sache, ich muss eine Nachricht genau weiterleiten). Ich habe einige Ideen, wie ich damit umgehen soll, aber sie sind nicht benutzerfreundlich. Habt ihr hier Vorschläge?
Ich habe zwei einfache Teile: 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>
Ich verwende zum Weiterleiten einen einfachen Link https://t.me/dvachannel/143325 und es funktioniert gut auf meinem Laptop und Android, aber nicht auf dem iPhone.
Das obige ist der detaillierte Inhalt vonTelegramm window.open(url, _blank); Funktioniert seltsam auf iOS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!