mirror of
https://github.com/Lightcord/Lightcord.git
synced 2025-04-12 00:55:40 +02:00
Fix a bug where you could disconnect from discord
This commit is contained in:
parent
cc7ff4a030
commit
ba15e718ed
File diff suppressed because one or more lines are too long
@ -1,83 +1,83 @@
|
||||
import Utils from "./utils"
|
||||
|
||||
const dispatcher = window.Lightcord.DiscordModules.dispatcher
|
||||
const ChannelModule = BDModules.get(e => e.default && e.default.getChannel && e.default.hasChannel)[0].default
|
||||
let relationShipModule = BDModules.get(e => e.default && e.default.addRelationship)[0]
|
||||
let DMModule = BDModules.get(e => e.default && e.default.closePrivateChannel)[0]
|
||||
|
||||
const blocked = {}
|
||||
|
||||
let userModule = BDModules.get(e => e.default && e.default.getCurrentUser)[0]
|
||||
function getCurrentUser(){
|
||||
if(userModule)return userModule.default.getCurrentUser()
|
||||
return null
|
||||
}
|
||||
|
||||
export default new class AntiBotDM {
|
||||
constructor(){
|
||||
this.antiDM = this.antiDM.bind(this)
|
||||
this.enabled = false
|
||||
}
|
||||
|
||||
enable(){
|
||||
if(this.enabled)return
|
||||
this.enabled = true
|
||||
|
||||
dispatcher.subscribe("MESSAGE_CREATE", this.antiDM)
|
||||
}
|
||||
|
||||
disable(){
|
||||
if(!this.enabled)return
|
||||
this.enabled = false
|
||||
|
||||
dispatcher.unsubscribe("MESSAGE_CREATE", this.antiDM)
|
||||
}
|
||||
|
||||
antiDM(ev){
|
||||
if(!ev.message.author.bot)return
|
||||
if(ev.message.author.id === getCurrentUser().id)
|
||||
if(ev.message.guild_id)return
|
||||
|
||||
const channel = ChannelModule.getChannel(ev.message.channel_id)
|
||||
if(!channel)return // might be broken
|
||||
|
||||
if(channel.type !== 1)return
|
||||
|
||||
if(blocked[ev.message.author.id])return // If the user unblock the bot, Don't block it again.
|
||||
|
||||
if(scanMessage(ev.message)){
|
||||
blocked[ev.message.author.id] = true
|
||||
Utils.showToast(`[AdBlock]: Blocked ${ev.message.author.username}#${ev.message.author.discriminator}`, {
|
||||
"type": "warning"
|
||||
})
|
||||
if(!relationShipModule)relationShipModule = BDModules.get(e => e.default && e.default.addRelationship)[0]
|
||||
relationShipModule.default.addRelationship(ev.message.author.id, {
|
||||
location: "ContextMenu"
|
||||
}, 2)
|
||||
if(!DMModule)DMModule = BDModules.get(e => e.default && e.default.closePrivateChannel)[0]
|
||||
DMModule.default.closePrivateChannel(channel.id, false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function scanMessage(message){
|
||||
if(/(discord\.gg|discord\.com\/invite\/|discordapp\.com\/invite\/)/g.test(message.content))return true
|
||||
if(EmbedsContains(message, "discord.gg/") || EmbedsContains(message, "discord.com/invite/") || EmbedsContains(message, "discordapp.com/invite/"))return true
|
||||
|
||||
return false
|
||||
}
|
||||
function EmbedsContains(message, search){
|
||||
let embeds = message.embeds
|
||||
if(embeds.length === 0)return false
|
||||
return embeds.map(embed => {
|
||||
if(embed.type !== "rich")return false
|
||||
if((embed.title || "").includes(search))return true
|
||||
if((embed.description || "").includes(search))return true
|
||||
if(((embed.footer || "") && embed.footer.text || "").includes(search))return true
|
||||
if(embed.fields.map(e => {
|
||||
return e.value.includes(search) || e.name.includes(search)
|
||||
}).includes(true))return true
|
||||
return false
|
||||
|
||||
}).includes(true)
|
||||
import Utils from "./utils"
|
||||
|
||||
const dispatcher = window.Lightcord.DiscordModules.dispatcher
|
||||
const ChannelModule = BDModules.get(e => e.default && e.default.getChannel && e.default.hasChannel)[0].default
|
||||
let relationShipModule = BDModules.get(e => e.default && e.default.addRelationship)[0]
|
||||
let DMModule = BDModules.get(e => e.default && e.default.closePrivateChannel)[0]
|
||||
|
||||
const blocked = {}
|
||||
|
||||
let userModule = BDModules.get(e => e.default && e.default.getCurrentUser)[0]
|
||||
function getCurrentUser(){
|
||||
if(userModule)return userModule.default.getCurrentUser()
|
||||
return null
|
||||
}
|
||||
|
||||
export default new class AntiBotDM {
|
||||
constructor(){
|
||||
this.antiDM = this.antiDM.bind(this)
|
||||
this.enabled = false
|
||||
}
|
||||
|
||||
enable(){
|
||||
if(this.enabled)return
|
||||
this.enabled = true
|
||||
|
||||
dispatcher.subscribe("MESSAGE_CREATE", this.antiDM)
|
||||
}
|
||||
|
||||
disable(){
|
||||
if(!this.enabled)return
|
||||
this.enabled = false
|
||||
|
||||
dispatcher.unsubscribe("MESSAGE_CREATE", this.antiDM)
|
||||
}
|
||||
|
||||
antiDM(ev){
|
||||
if(!ev.message.author.bot)return
|
||||
if(ev.message.author.id === getCurrentUser().id)
|
||||
if(ev.message.guild_id)return
|
||||
|
||||
const channel = ChannelModule.getChannel(ev.message.channel_id)
|
||||
if(!channel)return // might be broken
|
||||
|
||||
if(channel.type !== 1)return
|
||||
|
||||
if(blocked[ev.message.author.id])return // If the user unblock the bot, Don't block it again.
|
||||
|
||||
if(scanMessage(ev.message)){
|
||||
blocked[ev.message.author.id] = true
|
||||
Utils.showToast(`[AdBlock]: Blocked ${ev.message.author.username}#${ev.message.author.discriminator}`, {
|
||||
"type": "warning"
|
||||
})
|
||||
if(!relationShipModule)relationShipModule = BDModules.get(e => e.default && e.default.addRelationship)[0]
|
||||
relationShipModule.default.addRelationship(ev.message.author.id, {
|
||||
location: "ContextMenu"
|
||||
}, 2)
|
||||
if(!DMModule)DMModule = BDModules.get(e => e.default && e.default.closePrivateChannel)[0]
|
||||
DMModule.default.closePrivateChannel(channel.id, false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function scanMessage(message){
|
||||
if(/(discord\.gg|discord\.com\/invite\/|discordapp\.com\/invite\/)/g.test(message.content))return true
|
||||
if(EmbedsContains(message, "discord.gg/") || EmbedsContains(message, "discord.com/invite/") || EmbedsContains(message, "discordapp.com/invite/"))return true
|
||||
|
||||
return false
|
||||
}
|
||||
function EmbedsContains(message, search){
|
||||
let embeds = message.embeds || []
|
||||
if(embeds.length === 0)return false
|
||||
return embeds.map(embed => {
|
||||
if(embed.type !== "rich")return false
|
||||
if((embed.title || "").includes(search))return true
|
||||
if((embed.description || "").includes(search))return true
|
||||
if(((embed.footer || "") && embed.footer.text || "").includes(search))return true
|
||||
if((embed.fields || []).map(e => {
|
||||
return e.value.includes(search) || e.name.includes(search)
|
||||
}).includes(true))return true
|
||||
return false
|
||||
|
||||
}).includes(true)
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user