Skip to content

慕然科技的模拟封号 #6

@ccwmoran

Description

@ccwmoran
//慕然科技官网ccwmoran.github.io
class BanSimulatorExtension{
constructor(){this.modalStyle=null}
getInfo(){
return{
id:'fh',
name:'慕然科技的模拟封号',
color:'#00A1D6',
blocks:[
{
opcode:'showBanNotice',
blockType:Scratch.BlockType.COMMAND,
text:'显示封号提示 主题色 [COLOR] 标题 [TITLE] 原因 [REASON] 封禁天数 [DAYS] 详情 [DETAILS] 申诉流程 [APPEAL_PROCESS] 申诉链接 [APPEAL_URL] 显示关闭按钮 [SHOW_CLOSE]',
arguments:{
COLOR:{type:Scratch.ArgumentType.COLOR,defaultValue:'#ff0000'},
TITLE:{type:Scratch.ArgumentType.STRING,defaultValue:'你被封号了!'},
REASON:{type:Scratch.ArgumentType.STRING,defaultValue:'违反社区规定'},
DAYS:{type:Scratch.ArgumentType.NUMBER,defaultValue:7},
DETAILS:{type:Scratch.ArgumentType.STRING,defaultValue:'您的账号因发布违规内容而被封禁。'},
APPEAL_PROCESS:{type:Scratch.ArgumentType.STRING,defaultValue:'如果您认为这是误封,请点击下方按钮申诉。'},
APPEAL_URL:{type:Scratch.ArgumentType.STRING,defaultValue:'https://example.com/appeal'},
SHOW_CLOSE:{type:Scratch.ArgumentType.BOOLEAN,defaultValue:true}
}
},
{
opcode:'showSimpleBan',
blockType:Scratch.BlockType.COMMAND,
text:'显示简单封号提示 原因 [REASON] 封禁天数 [DAYS] 显示关闭按钮 [SHOW_CLOSE]',
arguments:{
REASON:{type:Scratch.ArgumentType.STRING,defaultValue:'违反用户协议'},
DAYS:{type:Scratch.ArgumentType.NUMBER,defaultValue:3},
SHOW_CLOSE:{type:Scratch.ArgumentType.BOOLEAN,defaultValue:true}
}
},
{
opcode:'showPermanentBan',
blockType:Scratch.BlockType.COMMAND,
text:'显示永久封禁提示 原因 [REASON] 显示关闭按钮 [SHOW_CLOSE]',
arguments:{
REASON:{type:Scratch.ArgumentType.STRING,defaultValue:'严重违规行为'},
SHOW_CLOSE:{type:Scratch.ArgumentType.BOOLEAN,defaultValue:true}
}
}
]
}}
showBanNotice(args){this.createBanModal({color:args.COLOR,title:args.TITLE,reason:args.REASON,days:args.DAYS,details:args.DETAILS,appealProcess:args.APPEAL_PROCESS,appealUrl:args.APPEAL_URL,showClose:args.SHOW_CLOSE})}
showSimpleBan(args){this.createBanModal({color:'#ff0000',title:'账号封禁通知',reason:args.REASON,days:args.DAYS,details:`您的账号因违反平台规则已被限制使用${args.DAYS}天。`,appealProcess:'如需申诉,请联系客服。',appealUrl:'https://example.com/support',showClose:args.SHOW_CLOSE})}
showPermanentBan(args){this.createBanModal({color:'#8B0000',title:'永久封禁通知',reason:args.REASON,days:-1,details:'您的账号因严重违规行为已被永久封禁。',appealProcess:'此封禁为最终决定,无法申诉。',appealUrl:'#',showClose:args.SHOW_CLOSE})}
createBanModal(c){const e=document.getElementById('scratch-ban-modal');if(e)document.body.removeChild(e);const m=document.createElement('div');m.id='scratch-ban-modal';m.style.cssText='position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.8);display:flex;justify-content:center;align-items:center;z-index:9999;font-family:Arial,sans-serif;';const t=document.createElement('div');t.style.cssText=`background:white;border-radius:12px;padding:30px;max-width:500px;width:80%;box-shadow:0 10px 30px rgba(0,0,0,0.3);text-align:center;border-top:8px solid ${c.color};position:relative;`;const h=document.createElement('h2');h.textContent=c.title;h.style.cssText=`color:${c.color};margin:0 0 20px 0;font-size:24px;font-weight:bold;`;const r=document.createElement('div');r.textContent=`封禁原因:${c.reason}`;r.style.cssText='background:#f8f8f8;padding:15px;border-radius:6px;margin:15px 0;border-left:4px solid '+c.color+';text-align:left;font-weight:bold;';const b=document.createElement('div');if(c.days==-1){b.textContent='封禁类型:永久封禁';b.style.cssText='background:#ffebee;padding:12px;border-radius:6px;margin:10px 0;border:2px solid #f44336;text-align:center;font-weight:bold;color:#c62828;font-size:16px;'}else{b.textContent=`封禁时长:${c.days}天`;b.style.cssText='background:#fff3e0;padding:10px;border-radius:6px;margin:10px 0;border:1px solid #ff9800;text-align:center;font-weight:bold;color:#e65100;'}const d=document.createElement('div');d.textContent=c.details;d.style.cssText='color:#666;margin:15px 0;line-height:1.5;text-align:left;';const a=document.createElement('div');a.textContent=c.appealProcess;a.style.cssText='background:#fff8e1;padding:12px;border-radius:6px;margin:15px 0;border:1px solid #ffd54f;font-size:14px;text-align:left;';const bc=document.createElement('div');bc.style.cssText='margin-top:20px;';if(c.days!==-1&&c.appealUrl!=='#'){const ab=document.createElement('button');ab.textContent='立即申诉';ab.style.cssText=`background:${c.color};color:white;border:none;padding:12px 30px;border-radius:6px;font-size:16px;cursor:pointer;margin:10px 0;transition:background 0.3s;`;ab.onmouseover=()=>{ab.style.background=this.darkenColor(c.color,20)};ab.onmouseout=()=>{ab.style.background=c.color};ab.onclick=()=>{if(c.appealUrl&&c.appealUrl!=='#')window.open(c.appealUrl,'_blank')};bc.appendChild(ab)}if(c.showClose){const cb=document.createElement('button');cb.textContent=c.days==-1?'确认':'关闭';cb.style.cssText='background:#666;color:white;border:none;padding:8px 20px;border-radius:6px;font-size:14px;cursor:pointer;margin-left:'+(c.days==-1||c.appealUrl=='#'?'0':'10px')+';transition:background 0.3s;';cb.onmouseover=()=>{cb.style.background='#444'};cb.onmouseout=()=>{cb.style.background='#666'};cb.onclick=()=>{document.body.removeChild(m)};bc.appendChild(cb)}t.appendChild(h);t.appendChild(r);t.appendChild(b);t.appendChild(d);t.appendChild(a);t.appendChild(bc);m.appendChild(t);document.body.appendChild(m);if(c.showClose){m.onclick=e=>{if(e.target===m)document.body.removeChild(m)}}else{m.onclick=null}}
darkenColor(c,p){const n=parseInt(c.replace('#',''),16),a=Math.round(2.55*p),R=(n>>16)-a,G=(n>>8&0x00FF)-a,B=(n&0x0000FF)-a;return'#'+(0x1000000+(R<255?R<1?0:R:255)*0x10000+(G<255?G<1?0:G:255)*0x100+(B<255?B<1?0:B:255)).toString(16).slice(1)}}
Scratch.extensions.register(new BanSimulatorExtension());

Metadata

Metadata

Assignees

No one assigned

    Labels

    适配GandiIDE可导入至共创世界GandiIDE中使用(仅供参考)

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions