我正在制作一个电报机器人,我想添加将一些信息从小应用程序转发到聊天的选项。我决定使用 window.open(url, '_blank');在我在 iPhone 上尝试之前它一直运行良好。我没有转发,而是分享(这是一件大事,我正好需要转发一条消息)。我有一些如何处理它的想法,但它们对用户不友好。在这里你有什么建议吗?
我有两个简单的部分: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>
我使用一个简单的链接 https://t.me/dvachannel/143325 进行转发,它在我的笔记本电脑和 Android 上运行良好,但在 iPhone 上则不行。
以上是电报 window.open(url, _blank);在ios上工作很奇怪的详细内容。更多信息请关注PHP中文网其他相关文章!