// ==UserScript==
// @name Bilibili清空消息记录
// @description 清空回复、艾特记录、消息或私信。不可恢复,慎用!
// @namespace https://greasyfork.org/users/197529
// @homepage https://greasyfork.org/scripts/384886
// @supportURL https://greasyfork.org/scripts/384886/feedback
// @author kkocdko
// @license Unlicense
// @version 0.3.6
// @match *://message.bilibili.com/*
// @noframes
// @downloadURL none
// ==/UserScript==
'use strict'
const addFloatButton = initFloatButton()
addFloatButton('清空回复', () => clickAllEl('.reply-item .bl-button--primary'))
addFloatButton('清空艾特记录', () => clickAllEl('.at-item .bl-button--primary'))
addFloatButton('清空我的消息', () => clickAllEl('.close-icon'))
addFloatButton('清空私信存档', () => clickAllEl('.popup-btn-ctnr>.bl-button--primary'))
function clickAllEl (selector, parentNode = document) {
parentNode.querySelectorAll(selector).forEach(el => el.click())
}
function initFloatButton () {
return (document.addFloatButton = document.addFloatButton || (() => {
const buttonBarShadow = document.createElement('div').attachShadow({ mode: 'open' })
buttonBarShadow.innerHTML = ''
document.body.appendChild(buttonBarShadow.host)
return (text, onclick) => {
const button = document.createElement('button')
button.textContent = text
button.addEventListener('click', onclick)
return buttonBarShadow.appendChild(button)
}
})())
}