Получение доступа
- 92 682
- 283
Получение доступа к Aprel Kino
доступ откроцте
От APRELKUN,
Всё началось с жалоб на платформу Telegram. В случае игнора Telegram каналы блокирует полностью, ограничивает в регионах, либо вообще их удаляет.
Kinopoisk несёт ответственность за всё, а не только за обложки и за описание к фильмам (тобишь за буквы и картинки), на которые в прошлом году подавали жалобу. Сейчас даже не указывают посты в жалобах, абсолютно, тупо все каналы и чаты под снос, включая те, которые вообще к тематике фильмов не имеют никакого отношения.
ЯМа реагирует на упоминания этой же «ЯМы» от разных пользователей и в самых разных чатах и топиках Telegram.
VK пока что не ведёт такую борьбу и такого ущемления как ЯМа, наверное и не вели никогда. Взять даже модификации и сторонние клиенты, их очень много, даже слишком.
С момента разблокировки Telegram в РФ стал не таким крутым и свободным...
Наш сервер в Discord > https://discord.aprelteam.su.
В Discord до сих пор разрешена регистрация без указания номера.
Наше пространство в Матрице > https://matrix.aprelteam.su.
Матрица это вообще свежий глоток чистого воздуха. Спасибо что есть такой протокол и сотни мессенджеров на нём с абсолютно разными серверами. В Матрице не требуют личные данные. Номер для регистрации не нужен.
Почему ЯМа везде отправляет жалобы?
Потому что это идеальный способ блокировки и сноса вообще чего угодно, даже не имея на это никаких оснований. Этим способом до сих пор сносят целые каналы на YouTube и в Telegram. Все жалобы одобряются ботами и в редком случае модерацией. Существует масса сервисов по накрутке жалоб. Этим пользуются многие, так как эффект от подобного огроменный)
Осторожнее с картинками в Telegram!
Использовать скриншоты сайтов Ямы на своём же канале в Telegram запрещено и осторожнее с ботом @pic в чатах, так как абсолютно все отправленные картинки через данного бота - это владение Yandex и автоматически повод для подачи жалобы на ваш аккаунт и на чат, в котором это было отправлено. Вбиваете в поиск любого чата слово Yandex и тут же куча контента от бота @pic.
Был скриншот с нашим почтовиком Aprel Mail, на фоне которого была картинка Happy Halloween, которая вообще не то что к ЯМе, а к РФ в общем не имеет отношения.
Тот пост Telegram заблокировал.
И дополнили жалобу (добавили жалобу на канал @aprelthemes - где тупо темы для телеги). Страйки кидают постоянно. Цель понятка - уничтожить канал (даже если там нет нарушений, телега всё исполнит автоматически).
Роскомнадзор заблокировал сайты, использующие технологию Encrypted Client Hello (ECH). Недавно сервис активировал для всех своих пользователей шифрование заголовка SNI (Server Name Indication), что делает невозможным определение конкретного сайта при подключении по протоколу HTTPS. Это позволило сделать доступными многие сайты, ранее заблокированные, например, Рутрекер.
Информация для тех, кто пользуется Cloudflare. Сегодня Роскомнадзор начал блокировать сайты с TLS 1.3 от Cloudflare. Для того, чтобы восстановить доступность сайта достаточно отключить ECH или TLS 1.3.
Если у вас платный тариф, то шаги следующие:
1. Выбрать сайт, где требуется изменить настройки.
2. Перейти в раздел SSL/TLS.
3. Найти вкладку Edge Certificates.
4. Найдите Encrypted ClientHello (ECH) и выключите.
Для бесплатных тарифов есть два варианта. Самый простой это отключить TLS 1.3. Вместе с ним отключится и ECH. Это также можно сделать из панели управления. Шаги такие же как для платного тарифа, только в 4 шаге вместо ЕСH вы находите TLS 1.3 и выключаете.
Но самый оптимальный вариант это все-таки отключить только ECH, оставив при этом TLS 1.3. Для этого в бесплатном тарифе придется использовать API.
Запрос для глобального API ключа:
curl -X PATCH "https://api.cloudflare.com/client/v4/zones/{ID_ZONE}/settings/ech" \ -H "X-Auth-Email: {ACCOUNT_EMAIL}" \ -H "X-Auth-Key: {GLOBAL_API_KEY}" \ -H "Content-Type:application/json" --data '{"id":"ech","value":"off"}'
{ID_ZONE}, {ACCOUNT_EMAIL} и {GLOBAL_API_KEY} нужно заменить на свои значения.
Либо запрос для API токена:
curl -X PATCH "https://api.cloudflare.com/client/v4/zones/{ID_ZONE}/settings/ech" \ -H "Authorization: Bearer {API_KEY}" \ -H "Content-Type:application/json" --data '{"id":"ech","value":"off"}'
{ID_ZONE} и {API_KEY} нужно заменить на свои значения.
Создать API токен или посмотреть свой глобальный API ключ можно нажав справа сверху на иконку профиля и выбрав там My Profile.
Если вы не знаете как запускать данные команды, можете использовать для этого онлайн сервис запуска curl команд https://reqbin.com/curl . Но в таком случае очень важно использовать именно API токен и после использования сразу его удалить.
АНАЛОГИ
Помимо перечисленных, в реальном времени доступны и другие аналоги Cloudflare, такие как Yandex Cloud, AdGuard, Google Cloud Platform, Timeweb Cloud, DDoS-Guard, Selectel, VDS Selectel.
Я пробежался по списку лично. По сравнению с Cloudflare все эти сервисы полнейшая хуйня, чаще багованая, а ещё чаще полностью платная и багованая. Делайте выбор сами.
ОБСУЖДЕНИЕ
В этой статье я расскажу про использование Google Forms и Google Sheets для отслеживания расходов с автоматическими уведомлениями через Telegram Bot. После ввода суммы в форму бот должен отправлять сообщение с текущим статусом бюджета.
Все скрипты в этой работе я вставляю во вшитый в в таблицы гугл редактор скриптов, который можно найти во вкладке “Расширения” под названием “Apps Script”. Там же настраиваются триггеры, по которым эти скрипты будут работать.
Я уже давно пыталась найти связку между таблицами и ботом в телеграм, так как мне это было необходимо для решения множества задач. То же расписание в университете, к примеру, теперь будет реализовывать куда как легче и приятней, чем поднимать свой сервер для этой задачи и мучиться с тяжелейшей задачей переноса названия предметов в код. Изначально я рассматривала такие сервисы как IFTTT, pushbullet, однако эти капиталистические помойки были моментально посланы мной маршировать в закат сразу после требования оплатить подписку за вебхуки.
И вот, о чудо! Я случайно наткнулась на то, что лежало на поверхности: Google App Script.
На сегодняшнем простом примере расчета бюджета на каждый день я покажу, каким образом можно настроить взаимодействие между телегой и таблицами. Надеюсь, это будет полезно.
Описание пошагово:
1. Сбор данных через Google Forms
Сначала мне захотелось сделать так, чтобы каждый день в промежутке между 22:00 и 23:00 мне приходила ссылка на гугл формы с вопросом о том, сколько денег я потратила. Затем, по задумке, эта цифра заносится в специальный столбец и выступает главной переменной в формулах.
Появится соблазн грузить данные формы в уже существующую таблицу, но опыт показал, что под данные формы все же лучше создавать отдельную книгу и уже в ней прописывать скрипт переноса данных в целевую таблицу:
function onFormSubmit(e) { // Получаем данные из формы var formResponse = e.values; // Массив всех значений формы var sumValue = formResponse[1]; // Предполагаем, что сумма находится в первом столбце формы // Указываем идентификатор другой книги и лист, куда переносить данные var targetSpreadsheetId = 'sheetpost-id'; // ID целевой книги(можно найти в url таблицы между /d/ и /edit var targetSheetName = 'Расчеты'; // Название листа в целевой книге // Получаем целевой лист в другой книге var targetSpreadsheet = SpreadsheetApp.openById(targetSpreadsheetId); var targetSheet = targetSpreadsheet.getSheetByName(targetSheetName); // Находим первую пустую ячейку в столбце C начиная с C3 var targetRange = targetSheet.getRange('C3:C'); // Диапазон начиная с C3 var values = targetRange.getValues(); // Получаем все значения в столбце C var row = values.findIndex(function(row) { return row[0] === ''; // Ищем первую пустую ячейку }); // Если не нашли пустую строку, то используем первую пустую ячейку if (row === -1) { row = values.length; } // Записываем сумму в найденную ячейку targetSheet.getRange('C' + (row + 3)).setValue(sumValue); // Записываем сумму в найденную ячейку }
2. Обработка данных в Google Sheets
После того как в нужный мне столбец инкапсулировалось значение, таблица рассчитывает оставшийся бюджет на основе введённой суммы.
Формулы вычисляют:
Пример моего кода:
// Функция для отслеживания изменений в таблице function checkForChanges() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Расчеты"); // Лист с данными var oldSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("OldValues"); // Лист для хранения старых значений var rangeC = sheet.getRange('C3:C50'); // Диапазон для Value1 var rangeD = sheet.getRange('D3:D50'); // Диапазон для Value2 var rangeB = sheet.getRange('B3:B50'); // Диапазон для Value4 var valuesC = rangeC.getValues(); // Получаем значения из столбца C var valuesD = rangeD.getValues(); // Получаем значения из столбца D var valuesB = rangeB.getValues(); // Получаем значения из столбца B // Получаем старые значения из листа OldValues var oldValuesC = oldSheet.getRange('C3:C50').getValues(); var oldValuesD = oldSheet.getRange('D3:D50').getValues(); var updatedOldValuesC = []; var updatedOldValuesD = []; for (var i = 0; i < valuesC.length; i++) { var value1 = Math.round(valuesC[i][0]); // Значение из столбца C (округляем) var value2 = Math.round(valuesD[i][0]); // Значение из столбца D (округляем) var value4 = Math.round(valuesB[i][0]); // Значение из столбца B (округляем) // Получаем старые значения var oldValue1 = oldValuesC[i][0]; var oldValue2 = oldValuesD[i][0]; // Вычисляем Value3 как сумму value4 + Value2 (округляем) var value3 = Math.round(value4 + value2); // Если значение изменилось, и value1 не равно 0, отправляем уведомление и обновляем старое значение if ((value1 !== oldValue1 || value2 !== oldValue2) && value1 !== 0) { sendTelegramMessage(value1, value2, value3, value4); // Отправляем уведомление в Telegram // Добавляем измененные значения в массивы для обновления updatedOldValuesC.push([value1]); updatedOldValuesD.push([value2]); } else { // Если значения не изменились или value1 = 0, добавляем старые данные updatedOldValuesC.push([oldValue1]); updatedOldValuesD.push([oldValue2]); } } // Обновляем старые значения за один раз oldSheet.getRange('C3:C50').setValues(updatedOldValuesC); oldSheet.getRange('D3:D50').setValues(updatedOldValuesD); } // Функция для отправки сообщения в Telegram function sendTelegramMessage(value1, value2, value3, value4) { var token = "bot-API"; // Вставьте ваш Telegram API токен var chatId = "id"; // Вставьте ваш chat_id, в который должны быть отправлены данные из google // Формируем сообщение для отправки var message = "УВЕДОМЛЕНИЕ ОБ ИЗМЕНЕНИИ\n\n" + "Потрачено денег: " + value1 + "\n" + "Осталось: " + value2 + "\n" + "Можно потратить завтра: " + value3 + "\n" + "Было доступно: " + value4; var url = "https://api.telegram.org/bot" + token + "/sendMessage"; var payload = { chat_id: chatId, text: message }; var options = { method: "post", payload: payload }; UrlFetchApp.fetch(url, options); // Отправка сообщения в Telegram }
Описание работы кода
Цель функции checkForChanges отслеживать изменения в диапазонах столбцов таблицы Google Sheets, сравнивая текущие значения с сохранёнными старыми данными. При обнаружении изменений отправлять уведомления через Telegram Bot и обновлять список старых значений.
Пошаговый процесс:
1. Получение текущих и старых значений
2. Сравнение данных
3. Вычисление Value3
4. Обновление старых данных
Результат работы кода
Также отдельно можно добавить отправку сообщения по времени в бот с ссылкой на гугл форму, чтобы не забыть внести расходы за день:
function mySendTelegramMessage() { var token = 'bot-API'; // Ваш API Token var chatId = ''; // Ваш chat_id var message = 'Заполни форму! Если не тратилась, введи любое число. Иначе все поломается и умрет в муках (в первую очередь, ты): https://forms.gle/xxxxxxxx'; var url = 'https://api.telegram.org/bot' + token + '/sendMessage'; var payload = { chat_id: chatId, text: message }; var options = { method: 'post', contentType: 'application/x-www-form-urlencoded', payload: payload }; try { var response = UrlFetchApp.fetch(url, options); // Отправка запроса через API Telegram Logger.log('Message sent successfully: ' + response.getContentText()); } catch (e) { Logger.log('Error: ' + e.toString()); } } function createTimeTrigger() { // Создание триггера для выполнения sendTelegramMessage каждый день в 22:00 ScriptApp.newTrigger('mySendTelegramMessage') .timeBased() .everyDays(1) .atHour(22) // Установите нужное время .create(); }
Вот так выглядят сообщения в Telegram:
P.S. Это весьма сырой вариант подобной реализации, потому важно каждый день вности в форму какое-то число, хотя бы единицу, потому как если внести 0, то изменения не считаются и далее внесение данных может сильно "поплыть".
Впрочем, это уже совсем другая история, которую необходимо обсуждать в отдельной статье, как и проблему обновления лисат OldValues
Пользователей для отображения нет
Мы разместили cookie-файлы на твоё устройство, чтобы помочь сделать этот форум лучше. Ты можешь корректировать своё управление cookie-файлами, или же продолжить без каких-либо корректировок.