77using Andreal . Model . Arcaea ;
88using Andreal . UI . ImageGenerator ;
99using Andreal . Utils ;
10+ using Path = Andreal . Core . Path ;
1011
1112namespace Andreal . Executor ;
1213
@@ -126,7 +127,7 @@ private async Task<MessageChain> NewCar()
126127 }
127128
128129 [ CommandPrefix ( "/arc rand" , "随机选曲" , "选曲" ) ]
129- private MessageChain RandSong ( )
130+ private async Task < MessageChain > RandSong ( )
130131 {
131132 switch ( CommandLength )
132133 {
@@ -137,19 +138,33 @@ private MessageChain RandSong()
137138 var ( lower , upper ) = Command [ 0 ] . ConvertToArcaeaRange ( ) ;
138139 if ( lower < 0 ) return RobotReply . ParameterError ;
139140 var info = ArcaeaCharts . RandomSong ( lower , upper ) ;
140- return info == null
141- ? RobotReply . ParameterError
142- : RobotReply . RandSongReply + info . GetSongImage ( ) + info . NameWithPackageAndConst ;
141+ if ( info == null )
142+ return RobotReply . ParameterError ;
143+ else
144+ {
145+ var chain = new MessageChain ( ) ;
146+ chain . Append ( RobotReply . RandSongReply ) ;
147+ chain . Append ( ImageMessage . FromPath ( await Path . ArcaeaSong ( info ) ) ) ;
148+ chain . Append ( info . NameWithPackageAndConst ) ;
149+ return chain ;
150+ }
143151 }
144152 case 2 :
145153 {
146154 var ( lower , _) = Command [ 0 ] . ConvertToArcaeaRange ( ) ;
147155 var ( _, upper ) = Command [ 1 ] . ConvertToArcaeaRange ( ) ;
148156 if ( lower < 0 || upper < 0 || lower > upper ) return RobotReply . ParameterError ;
149157 var info = ArcaeaCharts . RandomSong ( lower , upper ) ;
150- return info == null
151- ? RobotReply . ParameterError
152- : RobotReply . RandSongReply + info . GetSongImage ( ) + info . NameWithPackageAndConst ;
158+ if ( info == null )
159+ return RobotReply . ParameterError ;
160+ else
161+ {
162+ var chain = new MessageChain ( ) ;
163+ chain . Append ( RobotReply . RandSongReply ) ;
164+ chain . Append ( ImageMessage . FromPath ( await Path . ArcaeaSong ( info ) ) ) ;
165+ chain . Append ( info . NameWithPackageAndConst ) ;
166+ return chain ;
167+ }
153168 }
154169 }
155170 }
@@ -161,14 +176,14 @@ private MessageChain CalcNote()
161176 if ( ! short . TryParse ( Command [ 0 ] , out var far ) || ! short . TryParse ( Command [ 1 ] , out var lost ) )
162177 return RobotReply . ParameterError ;
163178
164- if ( ! ArcaeaHelper . SongInfoParser ( Command . Skip ( 1 ) , out var song , out var dif , out var errMessage ) )
179+ if ( ! ArcaeaHelper . SongInfoParser ( Command . Skip ( 2 ) , out var song , out var dif , out var errMessage ) )
165180 return errMessage ;
166181
167182 var arcsong = song [ dif ] ;
168183
169184 var notes = arcsong . Note ;
170185
171- if ( arcsong . Rating <= 0 || notes <= 0 ) return "此谱面的Note数量暂未被记录。" ;
186+ if ( arcsong . Const <= 0 || notes <= 0 ) return "此谱面的Note数量暂未被记录。" ;
172187
173188 if ( far + lost > notes ) return RobotReply . ParameterError ;
174189
@@ -190,7 +205,7 @@ private MessageChain CalcScore()
190205
191206 var arcsong = song [ dif ] ;
192207
193- var defNum = arcsong . Rating ;
208+ var defNum = arcsong . Const ;
194209 var mptt = ptt - defNum ;
195210 if ( defNum == 0 || ptt < 0 || mptt > 2 ) return RobotReply . ParameterError ;
196211
@@ -216,7 +231,7 @@ private MessageChain CalcPtt()
216231
217232 var arcsong = song [ dif ] ;
218233
219- var defNum = arcsong . Rating ;
234+ var defNum = arcsong . Const ;
220235 var ptt = score switch
221236 {
222237 >= 1e7 => defNum + 2 ,
@@ -233,7 +248,7 @@ private async Task<MessageChain> Const()
233248 {
234249 if ( CommandLength == 0 ) return RobotReply . ParameterLengthError ;
235250
236- if ( ! ArcaeaHelper . SongInfoParser ( Command . Skip ( 1 ) , out var song , out _ , out var errMessage ) ) return errMessage ;
251+ if ( ! ArcaeaHelper . SongInfoParser ( Command , out var song , out _ , out var errMessage ) ) return errMessage ;
237252
238253 return await song . FullConstString ( ) ;
239254 }
@@ -342,7 +357,7 @@ private async Task<MessageChain> Search()
342357 RecordInfo recordInfo ;
343358 PlayerInfo playerInfo ;
344359
345- if ( ! ArcaeaHelper . SongInfoParser ( Command . Skip ( 1 ) , out var song , out _ , out var errMessage ) ) return errMessage ;
360+ if ( ! ArcaeaHelper . SongInfoParser ( Command , out var song , out _ , out var errMessage ) ) return errMessage ;
346361
347362 TextMessage exceptionInformation ;
348363 ( recordInfo , playerInfo , exceptionInformation ) = await GetUserBest ( song ) ;
@@ -388,7 +403,7 @@ private MessageChain Alias()
388403 {
389404 if ( CommandLength == 0 ) return RobotReply . ParameterLengthError ;
390405
391- if ( ! ArcaeaHelper . SongInfoParser ( Command . Skip ( 1 ) , out var song , out _ , out var errMessage ) ) return errMessage ;
406+ if ( ! ArcaeaHelper . SongInfoParser ( Command , out var song , out _ , out var errMessage ) ) return errMessage ;
392407
393408 var alias = ArcaeaCharts . GetSongAlias ( song . SongID ) ;
394409
0 commit comments