Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
K
koishi-plugin-hisoutensoku-jammer
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nanahira
koishi-plugin-hisoutensoku-jammer
Commits
eba8d3b3
Commit
eba8d3b3
authored
Sep 01, 2021
by
nanahira
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
improve
parent
33f56956
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
19 additions
and
9 deletions
+19
-9
package.json
package.json
+1
-1
src/index.ts
src/index.ts
+18
-8
No files found.
package.json
View file @
eba8d3b3
{
"name"
:
"koishi-plugin-hisoutensoku-jammer"
,
"version"
:
"1.1.
9
"
,
"version"
:
"1.1.
10
"
,
"description"
:
"A Koishi Plugin jamming hisoutensoku plays in group."
,
"main"
:
"dist/index.js"
,
"dependencies"
:
{
...
...
src/index.ts
View file @
eba8d3b3
import
type
{
Context
}
from
"
koishi-core
"
;
import
_
from
"
lodash
"
;
import
_
,
{
last
}
from
"
lodash
"
;
import
"
source-map-support/register
"
;
import
type
{
Logger
}
from
"
koishi-utils
"
;
...
...
@@ -56,6 +56,7 @@ const chineseCharacterList = [
class
HisoutensokuJammer
{
log
:
Logger
;
targetCtx
:
Context
;
lastMessageMap
=
new
Map
<
string
,
string
>
();
constructor
(
private
ctx
:
Context
,
private
config
:
HisoutensokuJammerConfig
)
{
this
.
targetCtx
=
config
.
target
(
ctx
);
this
.
log
=
ctx
.
logger
(
"
hisoutensoku-jammer
"
);
...
...
@@ -63,30 +64,39 @@ class HisoutensokuJammer {
apply
()
{
this
.
targetCtx
.
middleware
(
async
(
session
,
next
)
=>
{
const
sender
=
session
.
userId
;
const
message
=
session
.
content
;
this
.
handleMessage
(
message
).
then
();
this
.
handleMessage
(
message
,
sender
).
then
();
return
next
();
});
}
async
handleMessage
(
message
:
string
)
{
async
handleMessage
(
message
:
string
,
sender
:
string
)
{
let
realMessage
=
message
.
trim
().
split
(
'
\n
'
).
join
(
'
'
);
for
(
let
chineseCharacter
of
chineseCharacterList
)
{
realMessage
=
realMessage
.
replace
(
chineseCharacter
.
characterRegExp
,
chineseCharacter
.
value
)
}
const
messageMatch
:
RegExpMatchArray
=
realMessage
.
match
(
/
([
1-2
]?
?\d?
?\d
?)(([^\d][
1-2
]?\d{1,2}){3})
.+
?([
1-6
]
?\d
?\d
?\d
?\d)
/g
const
lastMessage
=
this
.
lastMessageMap
.
get
(
sender
);
this
.
lastMessageMap
.
set
(
sender
,
realMessage
);
let
messageMatch
:
RegExpMatchArray
=
realMessage
.
match
(
/
([
1-2
]?
*
\d?
*
\d
*
)(([^\d][
1-2
]?\d{1,2}){3})
.+
?([
1-6
]
*
\d
*
\d
*
\d
*
\d)
/g
);
if
(
!
messageMatch
&&
lastMessage
)
{
const
combinedMessage
=
`
${
lastMessage
}
${
realMessage
}
`
;
messageMatch
=
combinedMessage
.
match
(
/
([
1-2
]?
*
\d?
*
\d
*
)(([^\d][
1-2
]?\d{1,2}){3})
.+
?([
1-6
]
*
\d
*
\d
*
\d
*
\d)
/g
);
}
if
(
!
messageMatch
)
{
return
;
}
const
attackPromises
=
messageMatch
.
map
((
pattern
)
=>
{
const
patternMatch
=
pattern
.
match
(
/
([
1-2
]?
?\d?
?\d
?)(([^\d][
1-2
]?\d{1,2}){3})
.+
?([
1-6
]
?\d
?\d
?\d
?
\d)
/
/
([
1-2
]?
*
\d?
*
\d
*
)(([^\d][
1-2
]?\d{1,2}){3})
.+
?([
1-6
]
*
\d
*
\d
*
\d
*
\d)
/
);
const
firstDigit
=
patternMatch
[
1
].
replace
(
/ /g
,
''
);
const
firstDigit
=
patternMatch
[
1
].
replace
(
/
+
/g
,
''
);
const
address
=
`
${
firstDigit
}
.
${
patternMatch
[
2
].
slice
(
1
).
split
(
/
[^\d]
/
).
join
(
"
.
"
)}
`
;
const
port
=
parseInt
(
patternMatch
[
4
].
replace
(
/ /g
,
''
));
const
port
=
parseInt
(
patternMatch
[
4
].
replace
(
/
+
/g
,
''
));
return
this
.
startAttack
(
address
,
port
);
});
const
results
:
boolean
[]
=
await
Promise
.
all
(
attackPromises
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment