есть соо
Есть котакнт
Сообщений 1 страница 6 из 6
Поделиться3Вчера 05:44:47
56566
Поделиться4Вчера 05:47:13
// === SNS CHAT SCRIPT ===
// Настройки
const SNS_CONFIG = {
// ID подфорума, где работает чат (найди в URL подфорума)
forumId: 5,
// Ссылки на аватары по умолчанию (если у пользователя нет аватара)
defaultAvatars: [
'https://i.imgur.com/default1.png',
'https://i.imgur.com/default2.png'
],
// Цвета ников (чередуются)
nickColors: ['#6b7cb8', '#c47a5a', '#7cb86b', '#b86b9e', '#6bb8b8'],
// Автообновление (в миллисекундах)
refreshInterval: 15000,
// Селекторы элементов форума (подстрой под свой uCoz)
selectors: {
postContainer: '.post-container, .forum-post, #forum-posts',
post: '.post, .message, .forum-message',
author: '.post-author, .username, .author-name, .poster',
authorLink: '.post-author a, .username a, .author-name a',
avatar: '.post-avatar img, .avatar img, .user-avatar img',
content: '.post-content, .message-body, .post-body, .entry-content',
date: '.post-date, .message-date, .date'
}
};
(function() {
'use strict';
// Проверяем, находимся ли мы в нужном подфоруме
function isInTargetForum() {
const url = window.location.href;
// Проверяем по URL (forum-5 или f5 или类似)
return url.includes('forum-' + SNS_CONFIG.forumId) ||
url.includes('f' + SNS_CONFIG.forumId + '-') ||
url.includes('forum/' + SNS_CONFIG.forumId);
}
// Проверяем, что это страница темы (не список тем)
function isTopicPage() {
return window.location.href.includes('topic') ||
window.location.href.includes('thread') ||
document.querySelector('.topic-title, .thread-title');
}
// Получаем цвет ника по индексу
function getNickColor(index) {
return SNS_CONFIG.nickColors[index % SNS_CONFIG.nickColors.length];
}
// Парсим сообщения со страницы
function parseMessages() {
const messages = [];
const postSelector = SNS_CONFIG.selectors.post;
const posts = document.querySelectorAll(postSelector);
posts.forEach((post, index) => {
const authorEl = post.querySelector(SNS_CONFIG.selectors.authorLink) ||
post.querySelector(SNS_CONFIG.selectors.author);
const avatarEl = post.querySelector(SNS_CONFIG.selectors.avatar);
const contentEl = post.querySelector(SNS_CONFIG.selectors.content);
const dateEl = post.querySelector(SNS_CONFIG.selectors.date);
if (!authorEl || !contentEl) return;
const nick = authorEl.textContent.trim();
const avatar = avatarEl ? avatarEl.src : SNS_CONFIG.defaultAvatars[index % 2];
const content = contentEl.innerHTML;
const date = dateEl ? dateEl.textContent.trim() : '';
// Определяем, чьё сообщение (по текущему пользователю)
const currentNick = document.querySelector('.username-logged, .user-name')?.textContent?.trim();
const isRight = nick === currentNick;
messages.push({
nick: nick,
avatar: avatar,
content: content,
date: date,
isRight: isRight,
color: getNickColor(index)
});
});
return messages;
}
// Создаём HTML сообщения
function createMessageHTML(msg) {
const direction = msg.isRight ? 'right' : '';
return `
<div class="sns-msg ${direction}">
<img src="${msg.avatar}" alt="${msg.nick}" class="sns-msg-avatar"
onerror="this.src='${SNS_CONFIG.defaultAvatars[0]}'">
<div class="sns-msg-content">
<div class="sns-msg-nick" style="color: ${msg.color}">@${msg.nick}</div>
<div class="sns-msg-bubble">${msg.content}</div>
<div class="sns-msg-actions">
<button class="sns-action-btn">↻</button>
<button class="sns-action-btn">💬 0</button>
</div>
</div>
</div>
`;
}
// Рендерим чат
function renderChat() {
const messages = parseMessages();
if (messages.length === 0) {
document.getElementById('sns-chat-container').innerHTML =
'<div class="sns-loading">Сообщений пока нет</div>';
return;
}
Поделиться5Вчера 05:48:39
вввввв




