Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
M
Mirai
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
MyCard
Mirai
Commits
94f6af56
Commit
94f6af56
authored
Feb 17, 2020
by
Him188
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
9b3bc88b
72cd7b33
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
264 additions
and
45 deletions
+264
-45
README.md
README.md
+11
-5
mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/MiraiGraphical.kt
...otlin/net/mamoe/mirai/console/graphical/MiraiGraphical.kt
+11
-2
mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/controller/MiraiController.kt
...moe/mirai/console/graphical/controller/MiraiController.kt
+0
-36
mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/controller/MiraiGraphicalUIController.kt
...onsole/graphical/controller/MiraiGraphicalUIController.kt
+85
-0
mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/model/BotModel.kt
...otlin/net/mamoe/mirai/console/graphical/model/BotModel.kt
+13
-0
mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/model/ConsoleInfo.kt
...in/net/mamoe/mirai/console/graphical/model/ConsoleInfo.kt
+17
-0
mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/model/VerificationCodeModel.kt
...oe/mirai/console/graphical/model/VerificationCodeModel.kt
+17
-0
mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/LoginFragment.kt
...n/net/mamoe/mirai/console/graphical/view/LoginFragment.kt
+27
-0
mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/PrimaryView.kt
...lin/net/mamoe/mirai/console/graphical/view/PrimaryView.kt
+47
-2
mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/VerificationCodeFragment.kt
.../mirai/console/graphical/view/VerificationCodeFragment.kt
+19
-0
mirai-demos/mirai-demo-gentleman/src/main/kotlin/demo/gentleman/a.html
...irai-demo-gentleman/src/main/kotlin/demo/gentleman/a.html
+17
-0
No files found.
README.md
View file @
94f6af56
<div
align=
"center"
>
<a
href=
"https://mamoe.net"
target=
"_blank"
>
<img
width=
"160"
src=
"http://img.mamoe.net/2020/02/16/a759783b42f72.png"
alt=
"logo"
>
</a>
<h1
id=
"koishi"
><a
style=
"color: #39C5BB"
>
Mirai
</a></h1>
<img
width=
"160"
src=
"http://img.mamoe.net/2020/02/16/a759783b42f72.png"
alt=
"logo"
></br>
<img width="95" src="http://img.mamoe.net/2020/02/16/c4aece361224d.png" alt="title">
----
[

](https://gitter.im/mamoe/mirai?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
[

](https://github.com/mamoe/mirai/actions)
[

](https://bintray.com/him188moe/mirai/mirai-core/)
Mirai 是一个在全平台下运行,提供 QQ Android 和 TIM PC 协议支持的高效率机器人框架
这个项目的名字来源于
<p><a
href =
"http://www.kyotoanimation.co.jp/"
>
京都动画
</a>
作品
<a
href =
"https://www.bilibili.com/bangumi/media/md3365/?from=search&seid=14448313700764690387"
>
《境界的彼方》
</a>
的
<a
href =
"https://zh.moegirl.org/zh-hans/%E6%A0%97%E5%B1%B1%E6%9C%AA%E6%9D%A5"
>
栗山未来(Kuriyama
<b>
Mirai
</b>
)
</a></p>
<p><a
href =
"https://www.crypton.co.jp/"
>
CRYPTON
</a>
以
<a
href =
"https://www.crypton.co.jp/miku_eng"
>
初音未来
</a>
为代表的创作与活动
<a
href =
"https://magicalmirai.com/2019/index_en.html"
>
(Magical
<b>
Mirai
</b>
)
</a></p>
图标以及形象由画师
<a
href =
""
>
DazeCake
</a>
绘制
</div>
## Mirai
**[English](README-eng.md)**
多平台
**QQ Android 和 TimPC**
协议支持库与高效率的机器人框架.
...
...
mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/MiraiGraphical.kt
View file @
94f6af56
package
net.mamoe.mirai.console.graphical
import
net.mamoe.mirai.console.MiraiConsole
import
net.mamoe.mirai.console.graphical.controller.MiraiGraphicalUIController
import
net.mamoe.mirai.console.graphical.view.PrimaryView
import
tornadofx.App
import
tornadofx.find
import
tornadofx.launch
fun
main
(
args
:
Array
<
String
>)
{
launch
<
M
ainApp
>(
args
)
launch
<
M
iraiGraphicalUI
>(
args
)
}
class
M
ainApp
:
App
(
PrimaryView
::
class
)
{
class
M
iraiGraphicalUI
:
App
(
PrimaryView
::
class
)
{
override
fun
init
()
{
super
.
init
()
MiraiConsole
.
start
(
find
<
MiraiGraphicalUIController
>())
}
override
fun
stop
()
{
super
.
stop
()
MiraiConsole
.
stop
()
}
}
\ No newline at end of file
mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/controller/MiraiController.kt
deleted
100644 → 0
View file @
9b3bc88b
package
net.mamoe.mirai.console.graphical.controller
import
net.mamoe.mirai.Bot
import
net.mamoe.mirai.console.MiraiConsoleUI
import
net.mamoe.mirai.utils.LoginSolver
import
tornadofx.Controller
class
MiraiController
:
Controller
(),
MiraiConsoleUI
{
override
fun
pushLog
(
identity
:
Long
,
message
:
String
)
{
TODO
(
"not implemented"
)
//To change body of created functions use File | Settings | File Templates.
}
override
fun
prePushBot
(
identity
:
Long
)
{
TODO
(
"not implemented"
)
//To change body of created functions use File | Settings | File Templates.
}
override
fun
pushBot
(
bot
:
Bot
)
{
TODO
(
"not implemented"
)
//To change body of created functions use File | Settings | File Templates.
}
override
fun
pushVersion
(
consoleVersion
:
String
,
consoleBuild
:
String
,
coreVersion
:
String
)
{
TODO
(
"not implemented"
)
//To change body of created functions use File | Settings | File Templates.
}
override
suspend
fun
requestInput
(
question
:
String
):
String
{
TODO
(
"not implemented"
)
//To change body of created functions use File | Settings | File Templates.
}
override
fun
pushBotAdminStatus
(
identity
:
Long
,
admins
:
List
<
Long
>)
{
TODO
(
"not implemented"
)
//To change body of created functions use File | Settings | File Templates.
}
override
fun
createLoginSolver
():
LoginSolver
{
TODO
(
"not implemented"
)
//To change body of created functions use File | Settings | File Templates.
}
}
\ No newline at end of file
mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/controller/MiraiGraphicalUIController.kt
0 → 100644
View file @
94f6af56
package
net.mamoe.mirai.console.graphical.controller
import
javafx.application.Platform
import
javafx.stage.Modality
import
kotlinx.io.core.IoBuffer
import
net.mamoe.mirai.Bot
import
net.mamoe.mirai.console.MiraiConsole
import
net.mamoe.mirai.console.MiraiConsoleUI
import
net.mamoe.mirai.console.graphical.model.BotModel
import
net.mamoe.mirai.console.graphical.model.ConsoleInfo
import
net.mamoe.mirai.console.graphical.model.VerificationCodeModel
import
net.mamoe.mirai.console.graphical.view.VerificationCodeFragment
import
net.mamoe.mirai.utils.LoginSolver
import
tornadofx.Controller
import
tornadofx.Scope
import
tornadofx.find
import
tornadofx.observableListOf
class
MiraiGraphicalUIController
:
Controller
(),
MiraiConsoleUI
{
private
val
loginSolver
=
GraphicalLoginSolver
()
private
val
cache
=
mutableMapOf
<
Long
,
BotModel
>()
val
mainLog
=
observableListOf
<
String
>()
val
botList
=
observableListOf
<
BotModel
>()
val
consoleInfo
=
ConsoleInfo
()
fun
login
(
qq
:
String
,
psd
:
String
)
{
MiraiConsole
.
CommandListener
.
commandChannel
.
offer
(
"/login $qq $psd"
)
}
override
fun
pushLog
(
identity
:
Long
,
message
:
String
)
=
Platform
.
runLater
{
when
(
identity
)
{
0L
->
mainLog
.
add
(
message
)
else
->
cache
[
identity
]
?.
logHistory
?.
add
(
message
)
}
}
override
fun
prePushBot
(
identity
:
Long
)
=
Platform
.
runLater
{
BotModel
(
identity
).
also
{
cache
[
identity
]
=
it
botList
.
add
(
it
)
}
}
override
fun
pushBot
(
bot
:
Bot
)
=
Platform
.
runLater
{
cache
[
bot
.
uin
]
?.
bot
=
bot
}
override
fun
pushVersion
(
consoleVersion
:
String
,
consoleBuild
:
String
,
coreVersion
:
String
)
{
Platform
.
runLater
{
consoleInfo
.
consoleVersion
=
consoleVersion
consoleInfo
.
consoleBuild
=
consoleBuild
consoleInfo
.
coreVersion
=
coreVersion
}
}
override
suspend
fun
requestInput
(
question
:
String
):
String
{
val
model
=
VerificationCodeModel
()
find
<
VerificationCodeFragment
>(
Scope
(
model
)).
openModal
(
modality
=
Modality
.
APPLICATION_MODAL
,
resizable
=
false
)
return
model
.
code
.
value
}
override
fun
pushBotAdminStatus
(
identity
:
Long
,
admins
:
List
<
Long
>)
=
Platform
.
runLater
{
cache
[
identity
]
?.
admins
?.
setAll
(
admins
)
}
override
fun
createLoginSolver
():
LoginSolver
=
loginSolver
}
class
GraphicalLoginSolver
:
LoginSolver
()
{
override
suspend
fun
onSolvePicCaptcha
(
bot
:
Bot
,
data
:
IoBuffer
):
String
?
{
TODO
(
"not implemented"
)
//To change body of created functions use File | Settings | File Templates.
}
override
suspend
fun
onSolveSliderCaptcha
(
bot
:
Bot
,
url
:
String
):
String
?
{
TODO
(
"not implemented"
)
//To change body of created functions use File | Settings | File Templates.
}
override
suspend
fun
onSolveUnsafeDeviceLoginVerify
(
bot
:
Bot
,
url
:
String
):
String
?
{
TODO
(
"not implemented"
)
//To change body of created functions use File | Settings | File Templates.
}
}
\ No newline at end of file
mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/model/BotModel.kt
0 → 100644
View file @
94f6af56
package
net.mamoe.mirai.console.graphical.model
import
javafx.beans.property.SimpleObjectProperty
import
net.mamoe.mirai.Bot
import
tornadofx.*
class
BotModel
(
val
uin
:
Long
)
{
val
botProperty
=
SimpleObjectProperty
<
Bot
>(
null
)
var
bot
:
Bot
by
botProperty
val
logHistory
=
observableListOf
<
String
>()
val
admins
=
observableListOf
<
Long
>()
}
mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/model/ConsoleInfo.kt
0 → 100644
View file @
94f6af56
package
net.mamoe.mirai.console.graphical.model
import
javafx.beans.property.SimpleStringProperty
import
tornadofx.setValue
import
tornadofx.getValue
class
ConsoleInfo
{
val
consoleVersionProperty
=
SimpleStringProperty
()
var
consoleVersion
by
consoleVersionProperty
val
consoleBuildProperty
=
SimpleStringProperty
()
var
consoleBuild
by
consoleBuildProperty
val
coreVersionProperty
=
SimpleStringProperty
()
var
coreVersion
by
coreVersionProperty
}
\ No newline at end of file
mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/model/VerificationCodeModel.kt
0 → 100644
View file @
94f6af56
package
net.mamoe.mirai.console.graphical.model
import
javafx.beans.property.SimpleStringProperty
import
tornadofx.ItemViewModel
import
tornadofx.getValue
import
tornadofx.setValue
class
VerificationCode
{
val
codeProperty
=
SimpleStringProperty
(
""
)
var
code
:
String
by
codeProperty
}
class
VerificationCodeModel
(
code
:
VerificationCode
)
:
ItemViewModel
<
VerificationCode
>(
code
)
{
constructor
():
this
(
VerificationCode
())
val
code
=
bind
(
VerificationCode
::
codeProperty
)
}
\ No newline at end of file
mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/LoginFragment.kt
0 → 100644
View file @
94f6af56
package
net.mamoe.mirai.console.graphical.view
import
javafx.beans.property.SimpleStringProperty
import
net.mamoe.mirai.console.graphical.controller.MiraiGraphicalUIController
import
tornadofx.*
class
LoginFragment
:
Fragment
()
{
private
val
controller
=
find
<
MiraiGraphicalUIController
>(
FX
.
defaultScope
)
private
val
qq
=
SimpleStringProperty
()
private
val
psd
=
SimpleStringProperty
()
override
val
root
=
form
{
fieldset
(
"登录"
)
{
field
(
"QQ"
)
{
textfield
(
qq
)
}
field
(
"密码"
)
{
passwordfield
(
psd
)
}
button
(
"登录"
).
action
{
controller
.
login
(
qq
.
value
,
psd
.
value
)
close
()
}
}
}
}
\ No newline at end of file
mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/PrimaryView.kt
View file @
94f6af56
package
net.mamoe.mirai.console.graphical.view
import
tornadofx.View
import
tornadofx.borderpane
import
javafx.scene.control.TabPane
import
javafx.stage.Modality
import
net.mamoe.mirai.Bot
import
net.mamoe.mirai.console.graphical.controller.MiraiGraphicalUIController
import
tornadofx.*
class
PrimaryView
:
View
()
{
private
val
controller
=
find
<
MiraiGraphicalUIController
>()
override
val
root
=
borderpane
{
top
=
menubar
{
menu
(
"机器人"
)
{
item
(
"登录"
).
action
{
find
<
LoginFragment
>().
openModal
(
modality
=
Modality
.
APPLICATION_MODAL
,
resizable
=
false
)
}
}
}
left
=
listview
(
controller
.
botList
)
{
fitToParentHeight
()
cellFormat
{
graphic
=
vbox
{
label
(
it
.
uin
.
toString
())
// label(stringBinding(it.botProperty) { if (value != null) value.nick else "登陆中" })
}
onDoubleClick
{
(
center
as
TabPane
).
tab
(
it
.
uin
.
toString
())
{
listview
(
it
.
logHistory
)
isClosable
=
true
select
()
}
}
}
}
center
=
tabpane
{
tab
(
"Main"
)
{
listview
(
controller
.
mainLog
)
isClosable
=
false
}
}
}
}
\ No newline at end of file
mirai-console-graphical/src/main/kotlin/net/mamoe/mirai/console/graphical/view/VerificationCodeFragment.kt
0 → 100644
View file @
94f6af56
package
net.mamoe.mirai.console.graphical.view
import
javafx.scene.Parent
import
tornadofx.*
class
VerificationCodeFragment
:
Fragment
()
{
override
val
root
=
vbox
{
//TODO: 显示验证码
form
{
fieldset
{
field
(
"验证码"
)
{
textfield
()
}
}
}
}
}
\ No newline at end of file
mirai-demos/mirai-demo-gentleman/src/main/kotlin/demo/gentleman/a.html
0 → 100644
View file @
94f6af56
<!DOCTYPE html>
<html
lang=
"en"
>
<head>
<meta
charset=
"UTF-8"
>
<title></title>
</head>
<body>
<p><a
href=
"http://www.kyotoanimation.co.jp/"
>
京都动画
</a>
作品
<a
href=
"https://www.bilibili.com/bangumi/media/md3365/?from=search&seid=14448313700764690387"
>
《境界的彼方》
</a>
的
<a
href=
"https://zh.moegirl.org/zh-hans/%E6%A0%97%E5%B1%B1%E6%9C%AA%E6%9D%A5"
>
栗山未来(Kuriyama
<b>
Mirai
</b>
)
</a></p>
<p><a
href=
"https://www.crypton.co.jp/miku_eng"
>
初音未来
</a>
的线下创作文化活动
<a
href=
"https://magicalmirai.com/2019/index_en.html"
>
(Magical
<b>
Mirai
</b>
)
</a></p>
</body>
</html>
\ No newline at end of file
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