首頁  >  文章  >  後端開發  >  電報 window.open(url, &#_blank&#);在ios上工作很奇怪

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

PHPz
PHPz原創
2024-09-03 16:02:37325瀏覽

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