Telegram - First Message

Navigate to the first message of a Telegram channel by pressing Ctrl+B

スクリプトをインストールするには、Tampermonkey, GreasemonkeyViolentmonkey のような拡張機能のインストールが必要です。

You will need to install an extension such as Tampermonkey to install this script.

スクリプトをインストールするには、TampermonkeyViolentmonkey のような拡張機能のインストールが必要です。

スクリプトをインストールするには、TampermonkeyUserscripts のような拡張機能のインストールが必要です。

このスクリプトをインストールするには、Tampermonkeyなどの拡張機能をインストールする必要があります。

このスクリプトをインストールするには、ユーザースクリプト管理ツールの拡張機能をインストールする必要があります。

(ユーザースクリプト管理ツールは設定済みなのでインストール!)

Advertisement:

このスタイルをインストールするには、Stylusなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus などの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus tなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

(ユーザースタイル管理ツールは設定済みなのでインストール!)

Advertisement:

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください
// ==UserScript==
// @name        Telegram - First Message
// @namespace   https://tampermonkey.net/
// @version     0.1
// @description  Navigate to the first message of a Telegram channel by pressing Ctrl+B
// @author       You
// @match       https://t.me/*
// @grant       none
// @license     MIT
// ==/UserScript==

const firstMessageUrl = (channelId) => `https://t.me/${channelId}/0`;

const navigateToFirstMessage = () => {
  const channelLink = document.querySelector('.tgme_channel_info_link');
  if (channelLink) {
    const channelId = channelLink.getAttribute('href').split('/');
    window.location.href = firstMessageUrl(channelId[1]);
  }
};

const handleKeyPress = (event) => {
  if (event.ctrlKey && event.key === 'b') {
    navigateToFirstMessage();
  }
};

document.addEventListener('keypress', handleKeyPress);

// Wait for channel info to load (mutation observer)
const observer = new MutationObserver(mutations => {
  if (document.querySelector('.tgme_channel_info_link')) {
    observer.disconnect();
    navigateToFirstMessage();
  }
});

observer.observe(document.body, { childList: true, subtree: true });