Firepup650
(Firepup Sixfifty)
2월 14, 2025, 4:23오전
1
(아마 Development 채널에 올리는 게 맞을 수도 있지만, 확신이 없어서 여기에 올립니다)
제가 조금 관리하는 포럼에서 오래된 그룹 가입 요청 PM을 닫고 아카이브 처리하며 받은함을 정리하던 중, 매번 수동으로 하는 게 짜증이 났습니다.
그래서 이 작업을 대신 해줄 userscript를 소개합니다! 우클릭을 해서 “Tampermonkey” 옵션으로 가서 “Close and Archive” 스크립트를 실행하면 됩니다!
코드:
// ==UserScript==
// @name Close and Archive
// @namespace http://tampermonkey.net/
// @version 2025-02-14
// @description 실행 시 현재 열려 있는 토픽/개인 메시지를 닫고 아카이브 처리합니다
// @author Firepup Sixfifty
// @match https://=hostname=/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=amcforum.wiki
// @grant none
// @run-at context-menu
// ==/UserScript==
(function() {
'use strict';
fetch(`https://${window.location.hostname}/t/${window.location.pathname.split('/')[3]}/status`, {
"headers": {
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
"accept": "application/json",
"x-csrf-token": document.querySelector("[name='csrf-token']").content
},
"body": "status=closed&enabled=true",
"method": "PUT"
}).then((r)=>{
fetch(`https://${window.location.hostname}/t/${window.location.pathname.split('/')[3]}/status`, {
"headers": {
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
"accept": "application/json",
"x-csrf-token": document.querySelector("[name='csrf-token']").content
},
"body": "status=archived&enabled=true",
"method": "PUT"
}).then((r)=>{
fetch(`https://${window.location.hostname}/t/${window.location.pathname.split('/')[3]}/archive-message`, {
"headers": {
"accept": "application/json",
"x-csrf-token": document.querySelector("[name='csrf-token']").content
},
"method": "PUT"
});
})
})
})();
1개의 좋아요
잠깐… 그럼 이걸 어떻게 실행하죠? 어디에 두어야 하나요?
Firepup650
(Firepup Sixfifty)
2월 14, 2025, 5:20오전
3
Tampermonkey 브라우저 확장 프로그램용으로 작성된 스크립트입니다.
1개의 좋아요
Canapin
(Coin-coin le Canapin)
2월 14, 2025, 1:27오후
4
PM 페이지에 있을 때 a 단축키보다 더 많은 기능을 수행하나요?
Canapin
(Coin-coin le Canapin)
2월 14, 2025, 4:45오후
6
아카이브된 게시물에는 답글을 달 수 없습니다:
Firepup650
(Firepup Sixfifty)
2월 14, 2025, 5:55오후
7
글쎄, 그냥 실수로 스태프가 그걸 발견하는 경우를 대비해서 닫아두는 거야. 답장할 필요가 없다는 걸 더 명확하게 보여주기 위해서야.
Canapin
(Coin-coin le Canapin)
2월 14, 2025, 6:07오후
8
관리자이신가요, 아니면 모더레이터인가요? 관리자라면 유저스크립트에 의존하기보다 테마 컴포넌트를 직접 만들 수 있을 것입니다.
그렇다고 해도, 코드를 수정할 수 없는 사이트에서는 다양한 개선 사항을 위해 유저스크립트가 여전히 흥미로운 해결책입니다.
저는 많은 웹사이트에서 이를 사용하고 있습니다.
meta.discourse.org에서는 편집기 안에서 선택한 텍스트를 <kbd> 태그로 감싸는 Ctrl+Shift+k 단축키를 추가하는 스크립트를 하나 가지고 있습니다.
// ==UserScript==
// @name meta.discourse.org용 <kbd> 단축키
// @namespace Violentmonkey Scripts
// @version 1.0
// @description meta.discourse.org의 텍스트 영역에 Ctrl + Shift + k로 <kbd> 태그 삽입
// @author chatGPT
// @match https://meta.discourse.org/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
document.addEventListener('keydown', function(event) {
if (event.ctrlKey && event.shiftKey && event.key === 'K') {
const activeElement = document.activeElement;
if (activeElement.tagName === 'TEXTAREA' && activeElement.classList.contains('ember-text-area')) {
const start = activeElement.selectionStart;
const end = activeElement.selectionEnd;
const text = activeElement.value;
const insertText = '<kbd>';
const closeText = '</kbd>';
const selectedText = text.slice(start, end);
activeElement.value = text.slice(0, start) + insertText + selectedText + closeText + text.slice(end);
const cursorPosition = end === start
? start + insertText.length
: start + insertText.length + selectedText.length + closeText.length;
activeElement.selectionStart = activeElement.selectionEnd = cursorPosition;
event.preventDefault();
}
}
});
})();
또한, Tampermonkey는 소스 코드가 공개되지 않았기 때문에 사용하지 않습니다. 저는 오픈 소스 소프트웨어를 선호하며, 경쟁 제품들이 여러 개 있지만(모두 비슷해 보이고 스크립트는 상호 호환됩니다) 가장 많이 사용되는 것은 Violentmonkey 라고 생각합니다.
1개의 좋아요
Firepup650
(Firepup Sixfifty)
2월 14, 2025, 6:18오후
9
TC를 만드는 게 귀찮아서 그냥 사용자 스크립트로 넣었거든요. 이렇게 하면 수정하고 테스트하기가 더 빨랐어요 (처음에는 콘솔에서 몇 번 실행해서 테스트했어요)
오오, 그거 진짜 좋은 기능인데, 공유해줘서 고마워요!
Firepup650
(Firepup Sixfifty)
2월 14, 2025, 6:19오후
10
스크립트를 조금 수정해서 토픽에서도 작동하도록 만들었습니다. (참고로, 이렇게 하면 아카이브된 개인 메시지가 생성되는 이상한 효과가 발생합니다.)
1개의 좋아요