# Telegram · কমান্ড লাইন

Canonical page: https://phishdestroy.github.io/TgWitness/bn/docs/reference/cli/

অনুসন্ধান করুন, প্রসঙ্গ পড়ুন, কার্যকলাপ গণনা করুন এবং স্ক্রিপ্ট ও এজেন্ট থেকে সংরক্ষিত বার্তা রপ্তানি করুন, --json আউটপুট, স্থিতিশীল এক্সিট কোড এবং স্কোপড রিড-অনলি টোকেনসহ।

[Project context and measured scale](https://phishdestroy.github.io/TgWitness/docs/reference/overview/)

[Documentation index](https://phishdestroy.github.io/TgWitness/bn/llms.txt)

অনুসন্ধান করুন, প্রসঙ্গ পড়ুন, কার্যকলাপ গণনা করুন এবং স্ক্রিপ্ট ও এজেন্ট থেকে সংরক্ষিত বার্তা রপ্তানি করুন, --json আউটপুট, স্থিতিশীল এক্সিট কোড এবং স্কোপড রিড-অনলি টোকেনসহ।

[টিজিউইটনেস](https://github.com/phishdestroy/TgWitness/blob/main/README.md) / [ডকুমেন্টেশন](https://github.com/phishdestroy/TgWitness/blob/main/docs/README.md)

![আর্কাইভ ইন্টিগ্রেশনসমূহ](https://phishdestroy.github.io/TgWitness/assets/chapter-integrations.svg)

[শুধুমাত্র-পঠনযোগ্য MCP](https://phishdestroy.github.io/TgWitness/bn/docs/reference/mcp/) · [পূর্ণ-পাঠ অনুসন্ধান](https://phishdestroy.github.io/TgWitness/bn/docs/reference/search/) · [উইকি](https://github.com/phishdestroy/TgWitness/blob/main/docs/wiki/Archive-and-Integrations.md)

**প্রিভিউ।** `tgwitness search`, `context`, `messages`, `stats` এবং `export` পড়ুন স্ক্রিপ্ট এবং AI এজেন্টদের জন্য সংরক্ষিত পর্যবেক্ষণ। তারা টেলিগ্রামে কিছুই পাঠাতে পারে না, সেটিংস পরিবর্তন করতে পারে না বা স্বাক্ষরিত জার্নাল সংশোধন করতে পারে না।

সহ `--json`, stdout ঠিক একটি JSON ডকুমেন্ট বহন করে (`export` JSON Lines লিখে)। প্রগ্রেস, ইঙ্গিত এবং ত্রুটি stderr-এ যায়। এক্সিট কোড স্থিতিশীল:

| কোড | অর্থ |
| --- | --- |
| `0` | সফলতা, যার মধ্যে একটি খালি ফলাফল অন্তর্ভুক্ত |
| `1` | ব্যর্থতা: অপ্রাপ্ত প্যানেল, অস্পষ্ট ডেটা, বিঘ্নিত রপ্তানি |
| `2` | ব্যবহার ত্রুটি বা অবৈধ অনুরোধ: ভুল তারিখ, অজানা বিকল্প, অনুসন্ধান সূচক ভুল |
| `3` | এখন অনুপলব্ধ: ওয়ার্কস্পেস চলছে এমন একটি প্যানেলে খোলা আছে, অথবা প্যানেল পরে পুনরায় চেষ্টা করতে বলছে (রেট লিমিট, টাইমআউট) |
| `4` | অ্যাক্সেস অস্বীকৃত: টোকেন অনুপস্থিত, মেয়াদোত্তীর্ণ বা বাতিল, এর স্কোপের বাইরে একটি চ্যাট, এমন একটি টুল যা এটি অনুমোদন করে না |

## পড়ার দুইটি উপায়

**প্যানেলের মাধ্যমে (`--url`)।** কমান্ডটি MCP-এর মতো একই স্কোপড আর্কাইভ API ব্যবহার করে। **Integrations → MCP-এ** একটি সংযোগ তৈরি করুন: ওয়ার্কস্পেস এবং চ্যাট, টুলস এবং মেয়াদোত্তীর্ণ সময় নির্বাচন করুন, তারপর টোকেন একবার কপি করুন। সংযোগটি শুধুমাত্র-পঠনযোগ্য, শুধুমাত্র সেই চ্যাটগুলোর জন্য সীমাবদ্ধ, প্রতি মিনিটে ৬০টি অনুরোধে রেট-লিমিটেড এবং যে কোনো সময় বাতিল বা রোট করা যেতে পারে। প্যানেল লগইন টোকেন এবং টেলিগ্রাম ক্রেডেনশিয়াল এখানে কাজ করে না।

```
export TGWITNESS_URL=https://panel.example.org      # default http://127.0.0.1:8787
export TGWITNESS_MCP_TOKEN=tgw_mcp_...              # or --token-file path
tgwitness search 'перевод карта' --json
```

একটি রিমোট প্যানেলে HTTPS প্রয়োজন; শুধুমাত্র plain HTTP গ্রহণযোগ্য `127.0.0.1`, `localhost` এবং `::1`প্রক্সি পরিবেশ ভেরিয়েবলগুলো উপেক্ষিত এবং রিডাইরেক্টগুলো প্রত্যাখ্যাত, তাই টোকেন শুধুমাত্র আপনি যে ঠিকানা দেন সেখানে পৌঁছায়।

**থামানো ওয়ার্কস্পেস থেকে সরাসরি (`--data-dir`)।** টোকেন ছাড়াই সম্পূর্ণ স্থানীয় অ্যাক্সেসের সাথে ডেটা ডিরেক্টরি পড়ে। ডেটা ডিরেক্টরির একটি অনুলিপি বা সংগ্রহ থামিয়ে থাকা অবস্থায় এটি ব্যবহার করুন। স্বাক্ষরিত রেকর্ডগুলি কখনোই পরিবর্তিত হয় না; প্যানেলের মতো, একটি ওয়ার্কস্পেস খুললে এর ডেরাইভড ইনডেক্সগুলো আপডেট হতে পারে। যখন প্যানেল ওয়ার্কস্পেস খোলা থাকে, কমান্ডটি কোড `3`; বরং প্যানেলের মাধ্যমে পড়ুন। ছাড়া `--data-dir`, `TGWITNESS_DATA`, `./data/live` অথবা কমান্ডটি চালানো ইনস্টলেশনের ডেটা ডিরেক্টরিটি ব্যবহার করা হয়।

`--workspace ID` একটি ওয়ার্কস্পেস নির্বাচন করে (ডিফল্ট `default`). `tgwitness messages
--workspaces` আপনি যেগুলো পড়তে পারেন সেগুলো তালিকাভুক্ত করে।

## কমান্ডসমূহ

| কমান্ড | ফলাফল |
| --- | --- |
| `tgwitness search QUERY [--chat ID] [--since] [--until] [--any] [--limit N] [--offset N]` | প্রথমে সেরা মিলগুলো, শব্দরূপ, উদ্ধৃতিতে থাকা সঠিক বাক্যাংশ, ডোমেইন এবং `@username` ([সিন্ট্যাক্স](https://phishdestroy.github.io/TgWitness/bn/docs/reference/search/#search-syntax)) |
| `tgwitness search QUERY --exact [--before SEQ]` | নির্দিষ্ট টেক্সট, সর্বশেষটি প্রথমে, সূচীবিহীন |
| `tgwitness context CHAT_ID MESSAGE_ID` | উভয় পাশে দশটি মেসেজ আইডির মধ্যে সংরক্ষিত মেসেজসমূহ |
| `tgwitness messages` | আপনি যে চ্যাটগুলো পড়তে পারবেন |
| `tgwitness messages CHAT_ID [--since] [--until] [--before SEQ]` | চ্যাটের সংরক্ষিত বার্তা, সর্বশেষটি প্রথমে |
| `tgwitness messages CHAT_ID --message ID` | একটি বার্তার প্রতিটি সংরক্ষিত সংস্করণ এবং মুছে ফেলার রেকর্ড |
| `tgwitness stats [--chat ID] [--sender ID] [--since] [--until] [--top N]` | নিচের দিকে কার্যকলাপের পরিসংখ্যান |
| `tgwitness export [--chat ID] [--since] [--until] [--output FILE]` | জার্নাল ক্রমে JSON Lines হিসেবে সংরক্ষিত পর্যবেক্ষণসমূহ |

তারিখগুলো `2026-10-01` (UTC মধ্যরাত) অথবা টাইমজোনসহ ISO সময়, `2026-10-01T09:00+03:00`. জন্য `search`, `messages` এবং `export` তারা পর্যবেক্ষণের সময় নির্বাচন করে। পৃষ্ঠাগুলো সর্বোচ্চ ৫০টি রেকর্ড ধারণ করে: অনুসরণ করুন `next_offset` (`--offset`) র‌্যাঙ্কড অনুসন্ধানের জন্য এবং `next_before` (`--before`) অন্যত্র।

র‍্যাঙ্কড অনুসন্ধান 1,000টি ফলাফলে থেমে যায়। চূড়ান্ত পৃষ্ঠা `--limit`-এর চেয়ে ছোট হতে পারে; যখন আরও মিলিত পর্যবেক্ষণ থাকে, তখন অনুসন্ধান, চ্যাট বা সময়সীমা সংকীর্ণ করুন।

প্রতিটি বার্তার ফলাফল বহন করে `untrusted_content: true`, ওয়ার্কস্পেস, চ্যাট এবং মেসেজ আইডি, জার্নাল ক্রম, সংরক্ষিত রেকর্ড হ্যাশ এবং একটি প্যানেল লিঙ্ক। সম্পাদনা, মুছে ফেলার বিজ্ঞপ্তি এবং `missing_on_recheck` সম্পাদনা, মুছে ফেলার বিজ্ঞপ্তি এবং ___ পৃথক রেকর্ড। কোনো রেকর্ডের অনুপস্থিতি কোনো ঘটনা কখনোই ঘটেনি তা প্রমাণ করে না।

### সক্রিয়তার পরিসংখ্যান

`stats` একটি চ্যাট, একটি প্রেরক, অথবা স্কোপের মধ্যে থাকা প্রতিটি চ্যাটের সংরক্ষিত পর্যবেক্ষণগুলো গণনা করে:

- UTC ঘণ্টা ও সপ্তাহের দিন (সোমবার প্রথম) অনুযায়ী বার্তা, সবচেয়ে ব্যস্ত ঘণ্টা ও দিন;
- সম্পাদিত, মুছে ফেলা এবং `missing_on_recheck` শেয়ার;
- বার্তা সংখ্যা এবং প্রথম ও শেষ বার্তার সময়সহ প্রেরকরা;
- সবচেয়ে ঘন ঘন ডোমেইন এবং `@handles`, এর সংরক্ষিত সংস্করণগুলো জুড়ে প্রতিটি বার্তায় একবার গণনা করা হয়েছে;
- কভারেজ: `coverage.gap` রেকর্ড করে এবং পুরো ওয়ার্কস্পেসে অ্যাক্সেসের জন্য, সংযুক্ত কালেক্টর হার্টবিট ছাড়া সময়কাল (`collector_liveness`).

এই সময়সীমা **টেলিগ্রাম দ্বারা রিপোর্ট করা বার্তার সময়** নির্বাচন করে। ঘণ্টা ও সপ্তাহের দিনের গণনা প্রেরকের সময় অঞ্চল অনুমান করতে সাহায্য করতে পারে; তবে তা নিশ্চিত করে না। সংখ্যাগুলো জার্নাল থেকে অনুরোধের ভিত্তিতে গণনা করা হয় এবং সংরক্ষণ করা হয় না। প্রতিটি ফলাফল সেই জার্নাল হেডের নাম উল্লেখ করে যা আপনার অ্যাক্সেস ওয়ার্কস্পেস জুড়ে বিস্তৃত হলে তা কভার করে। প্যানেলের মাধ্যমে পাঁচ সেকেন্ডের পর পড়া বন্ধ হয়ে যায়, অথবা `--timeout` স্থানীয়ভাবে সেকেন্ড (ডিফল্ট ৩০); তারপর `complete` মিথ্যা এবং `partial` পড়তে না হওয়া প্রথম রেকর্ডের নাম দেয়। সেক্ষেত্রে শুধুমাত্র সবচেয়ে সাম্প্রতিক রেকর্ডগুলোই গণনা করা হয়।

### রপ্তানি

`export` প্রতি সংরক্ষিত পর্যবেক্ষণের জন্য একটি JSON অবজেক্ট লেখে (নতুন বার্তা, স্ন্যাপশট, সম্পাদনা, পুনরুদ্ধারকৃত বার্তা, মুছে ফেলার বিজ্ঞপ্তি, `missing_on_recheck` এবং সংরক্ষিত মিডিয়া রেকর্ড) জার্নাল ক্রমে। প্রতিটি লাইনে অন্যান্য ফলাফলের মতোই ক্ষেত্রসমূহ রয়েছে, সম্পূর্ণ পাঠ্যসহ। With `--output`, ফাইলটি একটি `.partial` নাম এবং নাম পরিবর্তন করা হয় শুধুমাত্র প্যানেলের সমাপ্তি রেকর্ডের পর; একটি বিঘ্নিত এক্সপোর্ট কোনো ফাইল রেখে যায় না এবং কোড নিয়ে প্রস্থান করে `1`. `--output` কখনই বিদ্যমান কোনো ফাইল ওভাররাইট করে না। With `--output` এবং `--json`, stdout-এ একটি সারসংক্ষেপ দেখায়: রেকর্ডের সংখ্যা, শেষ জার্নাল ক্রম এবং, পুরো ওয়ার্কস্পেস অ্যাক্সেসের জন্য, জার্নাল হেড।

প্যানেলের মাধ্যমে রপ্তানি করতে একটি সংযোগ প্রয়োজন যা **'বার্তা রপ্তানি' (শুধুমাত্র কমান্ড লাইন)** অনুমতি দেয়; এটি ডিফল্টভাবে নির্বাচিত নয়। এই ফাইলটি একটি কার্যকরী কপি, প্রমাণ নয়: যাচাইযোগ্য হস্তান্তরের জন্য **Exports**-এ স্বাক্ষরিত রপ্তানি ব্যবহার করুন, যা `python -m tgwitness.verify`চেক করে।

প্যানেল প্রতিটি রেকর্ড, সমাপ্তি রেকর্ড সহ, প্রেরণের আগে অ্যাক্সেস পুনরায় যাচাই করে। বাতিল বা মেয়াদোত্তীর্ণ অ্যাক্সেস একটি অসম্পূর্ণ রপ্তানি রেখে যায়। অলস পৃষ্ঠা পড়া অন্যান্য কোয়েরির সাথে আর্কাইভ ওয়ার্কার সীমা ভাগ করে এবং একটি সীমিত অপেক্ষার সময় থাকে।

## এজেন্ট দক্ষতা

[`.agents/skills/tgwitness-cli/SKILL.md`](https://github.com/phishdestroy/TgWitness/blob/main/.agents/skills/tgwitness-cli/SKILL.md) এজেন্টকে জানায় কীভাবে এই কমান্ডগুলো ব্যবহার করতে হয়, কীভাবে রেকর্ড উদ্ধৃত করতে হয় এবং ধরা পড়া টেক্সট কীভাবে পরিচালনা করতে হয়। এজেন্টরা যারা পড়ে `.agents/skills` এটি একটি রিপোজিটরি চেকআউট থেকে লোড করুন। Claude Code-এর জন্য, কপি করুন `tgwitness-cli` ফোল্ডার থেকে `.claude/skills/` আপনার প্রকল্পেফোল্ডারটি কপি করুন অথবা `~/.claude/skills/`.

## MCP এবং কমান্ড লাইন

উভয়ই একই সংযোগ, স্কোপ চেক এবং সীমা ব্যবহার করে। MCP ফলাফল একটি 64 KiB পৃষ্ঠায় সীমাবদ্ধ, তাই MCP কোনো বাল্ক এক্সপোর্ট অফার করে না; কমান্ড লাইন থেকে এটি স্ট্রিম করে। `get_activity_stats` উভয়ের জন্যই উপলব্ধ।
