private static readonly string SESSION_FILE = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
"MyTelegramApp",
"session.dat"
);
static string? Config(string what)
{
Directory.CreateDirectory(Path.GetDirectoryName(SESSION_FILE));
return what switch
{
"api_id" => "YOUR_REAL_API_ID",
"api_hash" => "YOUR_REAL_API_HASH",
"phone_number" => SetPhoneNumber(),
"verification_code" => SetVerificationCode(),
"password" => SetPassword2FA(),
"session_pathname" => SESSION_FILE, // ФИКСИРОВАННЫЙ ПУТЬ!
"device_model" => "PC",
"system_version" => "Windows 10",
"app_version" => "1.35.0",
_ => null
};
}
static async Task InitializationMyProfile()
{
try
{
WTelegram.Helpers.Log = (lvl, str) =>
Console.WriteLine($"[{DateTime.Now:HH:mm:ss}] {lvl}: {str}");
bool hasSession = File.Exists(SESSION_FILE);
Console.WriteLine(hasSession
? "✓ Загружаю существующую сессию..."
: "⚠ Создаю новую сессию...");
MyClient = new Client(Config);
MyUser = await MyClient.LoginUserIfNeeded();
Console.WriteLine($"✓ Авторизован: {MyUser.first_name} {MyUser.last_name}");
Console.WriteLine($"✓ Файл сессии: {SESSION_FILE}");
}
catch (Exception ex)
{
Console.WriteLine($"✗ Ошибка: {ex.Message}");
throw;
}
}
private static readonly string DB_PATH = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
"MyTelegramApp",
"tdlib_database"
);
private static readonly string FILES_PATH = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
"MyTelegramApp",
"tdlib_files"
);
static async Task Main()
{
Console.OutputEncoding = System.Text.Encoding.UTF8;
Directory.CreateDirectory(DB_PATH);
Directory.CreateDirectory(FILES_PATH);
_client = CreateTdClient();
await _client.ExecuteAsync(new TdApi.SetLogVerbosityLevel { NewVerbosityLevel = 2 });
while (!_haveAuthorization)
{
await Task.Delay(500);
}
Console.WriteLine("✅ Авторизация успешно завершена!");
Console.WriteLine($"✅ База данных: {DB_PATH}");
}
private static async Task OnAuthorizationStateUpdate(TdApi.AuthorizationState state)
{
if (state != null)
_state = state;
switch (_state)
{
case TdApi.AuthorizationState.AuthorizationStateWaitTdlibParameters:
bool hasDatabase = Directory.Exists(DB_PATH) &&
Directory.GetFiles(DB_PATH).Length > 0;
Console.WriteLine(hasDatabase
? "✓ Загружаю существующую сессию из базы данных..."
: "⚠ Создаю новую базу данных...");
await _client.ExecuteAsync(new TdApi.SetTdlibParameters
{
DatabaseDirectory = DB_PATH,
FilesDirectory = FILES_PATH,
UseMessageDatabase = false,
UseChatInfoDatabase = false,
UseSecretChats = true,
ApiId = YOUR_REAL_API_ID,
ApiHash = "YOUR_REAL_API_HASH",
SystemLanguageCode = "ru",
DeviceModel = "Desktop",
SystemVersion = "Windows 10",
ApplicationVersion = "1.0",
EnableStorageOptimizer = true,
IgnoreFileNames = false
});
break;
// дальше всё также как и в коде
}
}
import re
def kick_user_from_all_chats(user_id):
# Получаем список всех чатов, в которых участвует пользователь
chat_list = []
# Заполните chat_list, используя ваш собственный код для получения списка чатов с участником user_id
for chat_id in chat_list:
# Удаляем пользователя из каждой беседы
authorize.method('messages.removeChatUser', {
'chat_id': chat_id,
'user_id': user_id
})
if msg_lower[1:] == 'kick' or msg_lower[1:].startswith('kick '):
try:
user_id = re.findall(r'\[id(\d*)\|.*]', msg_orig)
local = msg.split(' ')
reason = ' '.join(map(str, local[2:999]))
user = authorize.method("users.get", {"user_ids": user_id})
fullname = user['first_name'] + ' ' + user['last_name']
user1 = authorize.method("users.get", {"user_ids": uid, "name_case": 'gen'})
fullname1 = user1['first_name'] + ' ' + user1['last_name']
if not reason:
write_message(sender, "❌ | Укажите причину!")
else:
kick_user_from_all_chats(user_id)
write_message(sender, f"Администратор [id{user_id}|{fullname}] Был исключен по запросу [id|{fullname1}].\nПричина: {reason.capitalize()}")
except:
write_message(sender, "❌ | Используйте /kick [id пользователя)] [reason]")
npm install gsap@latest
npm install gsap@latest --save-dev
npm install gsap-blur
import { gsap } from "gsap";
import { blur } from "gsap-blur";
const img = document.querySelector("#communication-img img");
const newImgSrc = "/assets/img/communication/chat1.png";
gsap.timeline()
.to(img, {
attr:{src:newImgSrc},
duration: 1,
ease: "none",
modifiers: {
blur: blur
},
blur: 50
})
import openai
client = openai.Client()
PROMPT = "Что такое OpenAI?"
HISTORY = "OpenAI - это компания, которая разрабатывает искусственный интеллект."
edited_news_text = client.chat.responses.create(
model="gpt-3.5-turbo",
prompts=[PROMPT, HISTORY],
stream=False,
)
print(edited_news_text.choices[0].message.content)
def new_user(self, bot, chat_id, user_tg_id, user_name, language_code, link):
self._model.chat_id = chat_id
self._model.user_tg_id = user_tg_id
result = asyncio.run(db.insert_user(self._model))
self._model = result._data[0]
if user_name is not None:
self.user_info = User_info(self._model, user_name, language_code, True)
else:
self.user_info = User_info(self._model, "", language_code, True)
self.status = enums.user_status.user
self.checkReferal(bot, link)
try:
client = await tdesk.ToTelethon(session=path, proxy=proxy, auto_reconnect=False)
task1 = loop.create_task(client.connect())
await asyncio.wait_for(task1, timeout=5)
except Exception as e:
print(f"An error occurred: {e}")
finally:
if client.is_connected():
await client.disconnect()
$("#wrappelLine").on("focusout", "#extLineSipProxy", function () {
var text = $(this).val();
var id = $(this).attr("id");
var parts = text.split(':');
var ipOrDns = parts[0];
var port = parts[1];
var reg = /^(([0-9]{1,4})|([1-5][0-9]{4})|(6[0-4][0-9]{3})|(65[0-4][0-9]{2})|(655[0-2][0-9])|(6553[0-5]))$/;
if (!reg.test(port) && $.trim(port) != "") {
alert("Неверное значение порта.\nВы должны выбрать порт из данного диапазона:\n0-65535.");
return 0;
}
$(this).replaceWith('<div class="EXL_MAIN_SIP_C3TCRRInp1" id="' + id + '">' + text + '</div>');
$("#" + id).focus();
});
$("#wrappelLine").on("focusout", "#extLineSipProxy", function () {
var text = $(this).val();
var id = $(this).attr("id");
$(this).replaceWith('<div class="EXL_MAIN_SIP_C3TCRRInp1" id="' + id + '">' + text + '</div>');
});
$("#wrappelLine").on("dblclick", "#extLineSipPort", function () {
var text = $(this).text();
var id = $(this).attr("id");
$(this).replaceWith('<input type="text" class="EXL_MAIN_SIP_C3TCRRInpSh1" maxlength="5" id="' + id + '" value="' + text + '" />');
$("#" + id).focus();
});
$("#wrappelLine").on("focusout", "#extLineSipPort", function () {
var text = $(this).val();
var id = $(this).attr("id");
var reg = /^(([0-9]{1,4})|([1-5][0-9]{4})|(6[0-4][0-9]{3})|(65[0-4][0-9]{2})|(655[0-2][0-9])|(6553[0-5]))$/;
if (!reg.test(text) && $.trim(text) != "") {
alert("Неверное значение порта.\nВы должны выбрать порт из данного диапазона:\n0-65535.");
// $(this).focus();
return 0;
}
if ($.trim(text.replace(/[",']/g, '')) == "" && $.trim(text) != "") {
alert("Введите Порт!");
// $(this).focus();
} else {
if ($.trim(text) == "") {
text = 5060;
}
$(this).replaceWith('<div class="EXL_MAIN_SIP_C3TCRRInpSh1" id="' + id + '">' + text + '</div>');
$("#extLineSipURI").attr("title", 'sip:' + $("#extLineSipLogin").text() + '@' + $("#extLineSipHost").text() + ':' + text);
}
});
$(document).ajaxSuccess(function () {
var f0dChildren = $('#f0_d_');
var fotosRElems = $('[id^="fotos-r"]');
var sortableOptions = {
animation: 150,
handle: '.click_red, [class^="tab-ds f_"]',
};
function applySortable(elements, options) {
elements.each(function () {
new Sortable(this, options);
});
}
applySortable(f0dChildren, sortableOptions);
applySortable(fotosRElems, sortableOptions);
});
$(document).on('content-loaded', function () {
// Вызывайте applySortable после добавления контента через AJAX
applySortable($('#f0_d_'), sortableOptions);
applySortable($('[id^="fotos-r"]'), sortableOptions);
});
$(document).trigger('content-loaded');
function generateOrderNumber(branch, orderType, number) {
return `${branch}-${orderType}-${number}`;
}
node-postgres
Установи еёnpm install pg
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
order_number VARCHAR(255) UNIQUE NOT NULL,
branch CHAR(1) NOT NULL,
order_type CHAR(1) NOT NULL,
created_at TIMESTAMP NOT NULL
);
orders
const { Pool } = require('pg');
const pool = new Pool({
// Ваши настройки подключения к базе данных
});
async function addOrder(branch, orderType) {
const client = await pool.connect();
try {
await client.query('BEGIN');
const { rows } = await client.query('SELECT COUNT(*) as count FROM orders WHERE created_at >= CURRENT_DATE');
const orderNumber = generateOrderNumber(branch, orderType, parseInt(rows[0].count) + 1);
await client.query('INSERT INTO orders (order_number, branch, order_type, created_at) VALUES ($1, $2, $3, NOW())', [orderNumber, branch, orderType]);
await client.query('COMMIT');
return orderNumber;
} catch (error) {
await client.query('ROLLBACK');
throw error;
} finally {
client.release();
}
}
addOrder
для добавления новых заказов в базу данных. Уникальный номер заказа будет сгенерирован автоматически, и счетчик числового номера заказа будет сбрасываться каждый день.(async () => {
try {
const orderNumber = await addOrder('Y', 'A');
console.log('Уникальный номер заказа:', orderNumber);
} catch (error) {
console.error('Ошибка при добавлении заказа:', error);
}
})();
YA-50
, Счетчик числового номера заказа будет сбрасываться каждый день автоматически благодаря условию WHERE created_at >= CURRENT_DATE
в запросе к базе данных. async function elUp(selector) {
try {
var html = await (await fetch(location.href)).text();
var newdoc = new DOMParser().parseFromString(html, 'text/html');
var chat = document.querySelector(selector);
chat.outerHTML = newdoc.querySelector(selector).outerHTML;
chat = document.querySelector(selector);
chat.scrollTop = chat.scrollHeight;
return true;
} catch(err) {return false;}
}
from aiogram import Bot, Dispatcher, types
from aiogram.contrib.middlewares.logging import LoggingMiddleware
from aiogram.types import ParseMode
from aiogram.utils import executor
API_TOKEN = 'YOUR_BOT_TOKEN'
admin_id = 'YOUR_ADMIN_ID'
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)
dp.middleware.setup(LoggingMiddleware())
support_enabled = True
@dp.message_handler(commands=['help'])
async def process_start_command(message: types.Message):
if message['from'].id == admin_id:
await message.answer(f"Hi, admin")
else:
keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
cancel_button = types.KeyboardButton(text="Отмена")
keyboard.add(cancel_button)
await message.answer(f"Привет! Если у тебя есть предложение или идея - напиши мне!", reply_markup=keyboard)
@dp.message_handler(lambda message: message.text == 'Отмена')
async def process_cancel_support(message: types.Message):
global support_enabled
support_enabled = False
await message.answer("Техническая поддержка отменена.")
@dp.message_handler(content_types=['text'])
async def process_start_command(message: types.Message):
global support_enabled
if support_enabled:
if message.reply_to_message == None:
if '/start' not in message.text and message.text != 'Отмена':
await bot.forward_message(admin_id, message.from_user.id, message.message_id)
await message.answer('Спасибо за сообщение!!')
else:
if message['from'].id == admin_id:
if message.reply_to_message.forward_from.id:
await bot.send_message(message.reply_to_message.forward_from.id, message.text)
else:
await message.answer('На сообщения нельзя отвечать!')
else:
await message.answer('Техническая поддержка отключена.')
if __name__ == '__main__':
from aiogram import executor
executor.start_polling(dp, skip_updates=True)
void Update()
{
if (canExecute && (Input.GetMouseButtonDown(0) || Input.GetKeyDown(KeyCode.Space)) && !IsPointerOverUIObject() && !endGame)
{
canExecute = false;
cooldownTimer = cooldownDuration;
Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
directionKnife = mousePosition;
mousePosition.z = 0f;
GameObject knife = Instantiate(knifePrefab, mousePosition, Quaternion.identity);
StartCoroutine(RotateKnife(knife));
}
}
bool IsPointerOverUIObject()
{
#if UNITY_EDITOR || UNITY_STANDALONE || UNITY_WEBGL
return EventSystem.current.IsPointerOverGameObject();
#elif UNITY_ANDROID || UNITY_IOS
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
PointerEventData eventData = new PointerEventData(EventSystem.current);
eventData.position = touch.position;
List<RaycastResult> results = new List<RaycastResult>();
EventSystem.current.RaycastAll(eventData, results);
return results.Count > 0;
}
return false;
#endif
}
void Update()
{
bool isOverUI = false;
if (Application.platform == RuntimePlatform.Android || Application.platform == RuntimePlatform.IPhonePlayer)
{
if (Input.touchCount > 0)
{
int pointerId = Input.touches[0].fingerId;
isOverUI = EventSystem.current.IsPointerOverGameObject(pointerId);
}
}
else
{
isOverUI = EventSystem.current.IsPointerOverGameObject();
}
if (canExecute && (Input.GetMouseButtonDown(0) || Input.GetKeyDown(KeyCode.Space)) && !isOverUI && !endGame)
{
canExecute = false;
cooldownTimer = cooldownDuration;
Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
directionKnife = mousePosition;
mousePosition.z = 0f;
GameObject knife = Instantiate(knifePrefab, mousePosition, Quaternion.identity);
StartCoroutine(RotateKnife(knife));
}
}
вот пример с ним: