регламенты блять
Сообщений 1 страница 2 из 2
Поделиться12026-06-04 00:01:47
перенос неактивных эпизодов делаем раз в полгода, просто переносим темы не закрывая их
перенос завершенных эпизодов по запросу игрока - через опцию "закрыть и перенести", тема должна быть закрыта обяз
работа с токенами и ваучерами идет в разделах админки:
Поделиться22026-06-06 23:20:52
тех инфа для меня
app_id "9" - это баланс токенов
app_id "3" - это инфа о ваучерах
app_id "55" - это снс
Событие
Описание
pun_post
Стандартное событие, вызываемое также при отправке сообщения с помощью ajax. Как в стандартном сценарии, так и при автообновлении - вызывается в момент появления нового(-ых) сообщения(-й) на странице. В случае автообновления объект event содержит свойство mode со значением 'update'. Актуально для скриптов, обрабатывающих содержимое постов.
pun_main_update
Событие, вызываемое при обновлении содержимого #pun-main на странице темы, в Активных темах или на главной странице (когда информация на странице полностью актуализирована). Актуально, если ваш скрипт как-либо видоизменяет содержимое страницы и при автообновлении нужно выполнить преобразования вновь.
// $(document).on('имя_события', function(event) {
// // ваш код обработчика
// })
Код:notifications.addTemplate('testttt', { title: 'Заголовок уведомления', url: 'шаблон ссылки, по которой будет происходить переход при клике на уведомление', html: 'шаблон HTML содержимого уведомления, где {PROPERTY} будет значением свойства property, переданного в объекте в notifications.add()' }); notifications.add(2, 'testttt', {user_id: 2, username: 'ник', avatar: 'https://forumavatars.ru/img/avatars/001a/e1/ae/2-1781859182.gif'});
Код:// ========================================= // ТЗ: Восстановление данных из Firebase // ========================================= // Запускать в консоли браузера на форуме под админом (GroupID = 1) // 1. Показать последний бэкап const db = firebase.firestore(); const snap = await db.collection("backups").orderBy("timestamp", "desc").limit(1).get(); const backup = snap.docs[0].data(); console.log("Дата бэкапа:", backup.date); console.log("Пользователей app_3:", Object.keys(backup.app_3).length); console.log("Пользователей app_9:", Object.keys(backup.app_9).length); // 2. Восстановить ВСЕ данные const delay = ms => new Promise(r => setTimeout(r, ms)); // Восстановить app_3 (ваучеры) for (const [key, value] of Object.entries(backup.app_3)) { await mybbAPI.call("storage.set", { app_id: 3, key: key, value: value, token: window.ForumAPITicket }); console.log("app_3 OK:", key); await delay(100); } // Восстановить app_9 (токены) for (const [key, value] of Object.entries(backup.app_9)) { await mybbAPI.call("storage.set", { app_id: 9, key: key, value: value, token: window.ForumAPITicket }); console.log("app_9 OK:", key); await delay(100); } console.log("Восстановление завершено"); // ========================================= // ДОПОЛНИТЕЛЬНО: // ========================================= // Восстановить только одного пользователя: // const userId = 3; // if (backup.app_3["user_" + userId]) { // await mybbAPI.call("storage.set", { app_id: 3, key: "user_" + userId, value: backup.app_3["user_" + userId], token: window.ForumAPITicket }); // } // if (backup.app_9["user_" + userId]) { // await mybbAPI.call("storage.set", { app_id: 9, key: "user_" + userId, value: backup.app_9["user_" + userId], token: window.ForumAPITicket }); // } // Показать все бэкапы (последние 10): // const all = await db.collection("backups").orderBy("timestamp", "desc").limit(10).get(); // all.forEach(doc => console.log(doc.data().date, Object.keys(doc.data().app_3).length + Object.keys(doc.data().app_9).length, "пользователей")); // Удалить старые бэкапы (оставить только последние 7): // const allSnaps = await db.collection("backups").orderBy("timestamp", "desc").get(); // let count = 0; // allSnaps.forEach(async doc => { count++; if (count > 7) await db.collection("backups").doc(doc.id).delete(); });


