首页  >  文章  >  后端开发  >  电报 window.open(url, &#_blank&#);在ios上工作很奇怪

电报 window.open(url, &#_blank&#);在ios上工作很奇怪

PHPz
PHPz原创
2024-09-03 16:02:37405浏览

telegram window.open(url,

我正在制作一个电报机器人,我想添加将一些信息从小应用程序转发到聊天的选项。我决定使用 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn