Saya sedang membuat bot telegram dan saya mahu menambah pilihan untuk memajukan beberapa maklumat daripada aplikasi mini kepada sembang. Saya memutuskan untuk menggunakan window.open(url, '_blank'); dan ia berfungsi dengan baik sehingga saya mencubanya pada iPhone saya. Daripada memajukan, saya mendapat Kongsi (ini masalah besar, saya perlu memajukan mesej dengan tepat). Saya mempunyai beberapa idea bagaimana untuk menanganinya, tetapi ia tidak mesra pengguna. Adakah anda mempunyai sebarang cadangan di sini?
Saya mempunyai dua bahagian mudah: 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>
Saya menggunakan pautan mudah https://t.me/dvachannel/143325 untuk memajukan dan ia berfungsi dengan baik pada komputer riba dan android saya, tetapi tidak pada iPhone.
Atas ialah kandungan terperinci telegram window.open(url, _blank); berfungsi pelik pada ios. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!