聊天记录

This commit is contained in:
leefer
2026-08-16 22:35:21 +08:00
commit e67283a7ff
48 changed files with 95539 additions and 0 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 312 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 518 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 417 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 815 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 323 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 600 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 510 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 480 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 991 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 464 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 243 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 458 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 377 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 790 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 411 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 660 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 656 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 454 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 508 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1023 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 771 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 446 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 777 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 750 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 605 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 447 B

+211
View File
@@ -0,0 +1,211 @@
"use strict";
window.AllowBackFromHistory = false;
function CheckLocation() {
var start = "#go_to_message";
var hash = location.hash;
if (hash.substr(0, start.length) == start) {
var messageId = parseInt(hash.substr(start.length));
if (messageId) {
GoToMessage(messageId);
}
} else if (hash == "#allow_back") {
window.AllowBackFromHistory = true;
}
}
function ShowToast(text) {
var container = document.createElement("div");
container.className = "toast_container";
var inner = container.appendChild(document.createElement("div"));
inner.className = "toast_body";
inner.appendChild(document.createTextNode(text));
var appended = document.body.appendChild(container);
setTimeout(function () {
AddClass(appended, "toast_shown");
setTimeout(function () {
RemoveClass(appended, "toast_shown");
setTimeout(function () {
document.body.removeChild(appended);
}, 3000);
}, 3000);
}, 0);
}
function ShowHashtag(tag) {
ShowToast("This is a hashtag '#" + tag + "' link.");
return false;
}
function ShowCashtag(tag) {
ShowToast("This is a cashtag '$" + tag + "' link.");
return false;
}
function ShowBotCommand(command) {
ShowToast("This is a bot command '/" + command + "' link.");
return false;
}
function ShowMentionName() {
ShowToast("This is a link to a user mentioned by name.");
return false;
}
function ShowNotLoadedEmoji() {
ShowToast("This custom emoji is not included, change data exporting settings to download.");
return false;
}
function ShowNotAvailableEmoji() {
ShowToast("This custom emoji is not available.");
return false;
}
function ShowTextCopied(content) {
navigator.clipboard.writeText(content);
ShowToast("Text copied to clipboard.");
return false;
}
function ShowSpoiler(target) {
if (target.classList.contains("hidden")) {
target.classList.toggle("hidden");
}
}
function AddClass(element, name) {
var current = element.className;
var expression = new RegExp('(^|\\s)' + name + '(\\s|$)', 'g');
if (expression.test(current)) {
return;
}
element.className = current + ' ' + name;
}
function RemoveClass(element, name) {
var current = element.className;
var expression = new RegExp('(^|\\s)' + name + '(\\s|$)', '');
var match = expression.exec(current);
while ((match = expression.exec(current)) != null) {
if (match[1].length > 0 && match[2].length > 0) {
current = current.substr(0, match.index + match[1].length)
+ current.substr(match.index + match[0].length);
} else {
current = current.substr(0, match.index)
+ current.substr(match.index + match[0].length);
}
}
element.className = current;
}
function EaseOutQuad(t) {
return t * t;
}
function EaseInOutQuad(t) {
return (t < 0.5) ? (2 * t * t) : ((4 - 2 * t) * t - 1);
}
function ScrollHeight() {
if ("innerHeight" in window) {
return window.innerHeight;
} else if (document.documentElement) {
return document.documentElement.clientHeight;
}
return document.body.clientHeight;
}
function ScrollTo(top, callback) {
var html = document.documentElement;
var current = html.scrollTop;
var delta = top - current;
var finish = function () {
html.scrollTop = top;
if (callback) {
callback();
}
};
if (!window.performance.now || delta == 0) {
finish();
return;
}
var transition = EaseOutQuad;
var max = 300;
if (delta < -max) {
current = top + max;
delta = -max;
} else if (delta > max) {
current = top - max;
delta = max;
} else {
transition = EaseInOutQuad;
}
var duration = 150;
var interval = 7;
var time = window.performance.now();
var animate = function () {
var now = window.performance.now();
if (now >= time + duration) {
finish();
return;
}
var dt = (now - time) / duration;
html.scrollTop = Math.round(current + delta * transition(dt));
setTimeout(animate, interval);
};
setTimeout(animate, interval);
}
function ScrollToElement(element, callback) {
var header = document.getElementsByClassName("page_header")[0];
var headerHeight = header.offsetHeight;
var html = document.documentElement;
var scrollHeight = ScrollHeight();
var available = scrollHeight - headerHeight;
var padding = 10;
var top = element.offsetTop;
var height = element.offsetHeight;
var desired = top
- Math.max((available - height) / 2, padding)
- headerHeight;
var scrollTopMax = html.offsetHeight - scrollHeight;
ScrollTo(Math.min(desired, scrollTopMax), callback);
}
function GoToMessage(messageId) {
var element = document.getElementById("message" + messageId);
if (element) {
var hash = "#go_to_message" + messageId;
if (location.hash != hash) {
location.hash = hash;
}
ScrollToElement(element, function () {
AddClass(element, "selected");
setTimeout(function () {
RemoveClass(element, "selected");
}, 1000);
});
} else {
ShowToast("This message was not exported. Maybe it was deleted.");
}
return false;
}
function GoBack(anchor) {
if (!window.AllowBackFromHistory) {
return true;
}
history.back();
if (!anchor || !anchor.getAttribute) {
return true;
}
var destination = anchor.getAttribute("href");
if (!destination) {
return true;
}
setTimeout(function () {
location.href = destination;
}, 100);
return false;
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long