- mods/TelegramAuth, mods/TelegramAuthBot, mods/WatchTogether: копии из образа с enable: true (правило 1), секции в config/init.conf - TelegramAuth в API-режиме (enable: false -> accsdb/гейт не поднимается), TelegramAuthBot: бот @GatusMonBot, long polling - WatchTogether: customPlugins watchtogether.js, relay /wt/c/ - README: секция про SQLite/volume (первый запуск), таблица модулей, состояние Tg-notify и TelegramAuth, раздел WatchTogether - AGENT: правило 10 дополнено секретами init.conf, §12 переписан, добавлен §13 WatchTogether, список mods/ в §1 - в git bot_token и mutations_api_secret оставлены пустыми (правило 10), реальные значения только в рабочем файле на сервере
42 lines
1.2 KiB
C#
42 lines
1.2 KiB
C#
namespace TelegramAuthBot.Services
|
|
{
|
|
sealed partial class TelegramAuthBotSession
|
|
{
|
|
static string TruncateForTelegram(string s, int maxLen)
|
|
{
|
|
if (string.IsNullOrEmpty(s) || s.Length <= maxLen)
|
|
return s ?? "";
|
|
return s.Substring(0, maxLen) + "…";
|
|
}
|
|
|
|
static string StripJsonError(string json)
|
|
{
|
|
if (string.IsNullOrEmpty(json))
|
|
return "Ошибка API";
|
|
try
|
|
{
|
|
var jo = JObject.Parse(json);
|
|
var err = jo.Value<string>("error");
|
|
var det = jo.Value<string>("detail");
|
|
if (!string.IsNullOrEmpty(det))
|
|
return det;
|
|
return err ?? json;
|
|
}
|
|
catch
|
|
{
|
|
return json;
|
|
}
|
|
}
|
|
|
|
static string EscapeHtml(string s)
|
|
{
|
|
if (string.IsNullOrEmpty(s))
|
|
return "";
|
|
return s
|
|
.Replace("&", "&", StringComparison.Ordinal)
|
|
.Replace("<", "<", StringComparison.Ordinal)
|
|
.Replace(">", ">", StringComparison.Ordinal);
|
|
}
|
|
}
|
|
}
|