Files
zunda-bot/Sources/zundamon/Wolfram.swift

108 lines
3.6 KiB
Swift
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// import Foundation
// #if canImport(FoundationNetworking)
// import FoundationNetworking
// #endif
// import XMLCoder
// import DiscordBM
//
// struct Wolfram {
// static let token = ProcessInfo.processInfo.environment["WOLFRAM_APP_ID"]!
// static let apiUrl = "http://api.wolframalpha.com/v2/query"
//
// static func getWolfram(_ question: String) async throws -> (String, URL?) {
// let encQuestion = question.addingPercentEncoding(withAllowedCharacters: .alphanumerics)
// let url = URL(string: "\(apiUrl)?appid=\(token)&input=\(encQuestion!)")!
// let (data, _) = try await URLSession.shared.data(from: url)
//
// let wolframRes = try XMLDecoder().decode(WolframQueryResult.self, from: data)
//
// let resultPod = wolframRes.pod.first(where: { $0.primary ?? false || $0.id == "Result" })
//
// var ans: String?
// var img: URL?
//
// if let resultPod = resultPod {
// ans = String(resultPod.subpod.compactMap(\.plaintext).joined(by: "\n"))
// .replacingOccurrences(of: " | ", with: ": ")
// }
// if let imgPod = wolframRes.pod.first(where: {
// ["RootPlot", "NumberLine", "Plot", "ImplicitPlot", "3DPlot"].contains($0.id) ||
// ($0.id == "Example" && $0.scanner == "Dice")
// }) {
// ans = ans ?? "Plot:"
// img = imgPod.subpod.first?.img.src
// }
//
// if ans == nil,
// let maybePod = wolframRes.pod.first(where: { $0.title == "Input interpretation" }),
// let maybeText = maybePod.subpod.first?.plaintext
// .replacingOccurrences(of: " | ", with: ": ") {
// ans = "<:smol_rise:852763040452575252> I don't know. Maybe you meant '\(maybeText)'"
// }
//
// return (ans ?? "<:smol_rise:852763040452575252> sorry, I have no idea (´._.`)", img)
// }
//
// static func handleMath(
// _ args: ArraySlice<String.SubSequence>,
// client: DiscordClient,
// ctx: Gateway.MessageCreate
// ) async throws {
// try await client.triggerTypingIndicator(channelId: ctx.channel_id).guardSuccess()
//
// let question = String(args.joined(by: " "))
//
// let (answer, img) = try await getWolfram(question)
//
// var attachments: [Payloads.Attachment] = []
// var files: [RawFile] = []
//
// if let img = img {
// let data = try? await URLSession.shared.data(from: img)
// if let data = data?.0 {
// attachments.append(.init(index: 0, filename: "img.gif"))
// files.append(.init(data: .init(data: data), filename: "img.gif"))
// }
// }
//
// try await client.createMessage(channelId: ctx.channel_id, payload: .init(
// content: answer,
// message_reference: .init(
// type: .default,
// message_id: ctx.id,
// channel_id: ctx.channel_id,
// guild_id: ctx.guild_id,
// ),
// files: files,
// attachments: attachments
// )).guardSuccess()
// }
// }
//
// struct WolframQueryResult: Codable {
// struct Pod: Codable {
// let title: String
// let id: String
// let scanner: String
// let primary: Bool?
//
// let subpod: [Subpod]
// }
//
// struct Subpod: Codable {
// let title: String
// let img: Image
// let plaintext: String
// }
//
// struct Image: Codable {
// let src: URL
// }
//
// let success: Bool
// let numpods: Int
//
// let pod: [Pod]
// }
//