我正在使用Giraffe使用Async工作流创建本机.NET任务,因为我需要与Discord.NET库的互操作性.我有一个事件需要一个Task,但我写的事件处理程序返回一个Task<unit>由于某种原因,类型检查器不够聪明,不能意识到它是相同的事情.有没有办法将其转换Task<unit>为直线Task?
这是我的代码:
let messageReceived (msg : SocketMessage) =
task {
let author = msg.Author.Username
let text = msg.Content
match msg.Author.Username with
| "Monika" -> ()
| usr ->
if text.ToLower().StartsWith "<@407367655830585344> say" then
text.Substring 26 |> msg.Channel.SendMessageAsync |> ignore
else if text.ToLower().StartsWith "<@407367655830585344>" then
let response = (Lines.VoiceLines |> Extras.randomElement).Replace("[player]", author)
msg.Channel.SendMessageAsync response |> ignore
else if text.ToLower().StartsWith "delete" then
text.Substring 7 + ".chr deleted" |> msg.Channel.SendMessageAsync |> ignore
else if Extras.onein …Run Code Online (Sandbox Code Playgroud)