autoreg-skills-max: initial public release (restored, redacted, hardened)

This commit is contained in:
baradok60915d52e8425
2026-10-20 02:16:32 +03:00
commit f58eafeb48
565 changed files with 60064 additions and 0 deletions

View File

@@ -0,0 +1,66 @@
# StringSession Conversion
## The Problem
SQLite-based Telethon sessions deadlock when accessed in parallel. The error:
```
sqlite3.OperationalError: database is locked
```
This happens because SQLite uses file-level locking. When multiple accounts try to connect simultaneously, the `.session` files lock each other out.
## The Fix: StringSession
Convert ALL sessions to in-memory StringSession format stored in a single JSON file. No file locking, no database contention.
## Converter Script
Located at: `C:\Users\User\Desktop\_PROJECTS\рассылка\session_converter.py`
### How It Works
```python
# For each .session file:
client = TelegramClient(session_path, API_ID, API_HASH)
await client.connect()
ss = client.session.save() # Returns StringSession string
string_sessions[phone] = ss
await client.disconnect()
```
### Output
`generated/sessions_strings.json`:
```json
{
"12894827641": "1AgAOMTQ5...",
"14066141705": "1BQANOTE3...",
...
}
```
## Usage in Join Script
```python
# Load
with open("generated/sessions_strings.json") as f:
string_sessions = json.load(f)
# Use
ss = string_sessions.get(phone) or string_sessions.get(name)
if not ss:
return {"status": "no_stringsession"}
client = TelegramClient(StringSession(ss), API_ID, API_HASH)
await client.connect()
```
## Conversion Results (2026-07-08)
- 222 sessions converted
- 137 new StringSessions created
- 9 failures (corrupted sessions)
## Why NOT SQLite Retry
- WAL mode doesn't fix parallel access
- Retry with exponential backoff adds latency
- Timeout-based retry still leaves windows for deadlock
- StringSession is simpler, faster, and zero-lock
## Pitfalls
- StringSession strings are long (~350 chars) — the JSON file can be large
- Invalid/corrupted .session files will fail conversion silently
- Some accounts may have both .session and StringSession — prefer StringSession
- The `generated/sessions_strings.json` file should be backed up before mass operations