remove DiscordBM dependency

This commit is contained in:
2026-03-17 06:33:26 -04:00
parent c6b92d968a
commit 29a2b0370b
9 changed files with 361 additions and 370 deletions

View File

@@ -1,107 +1,107 @@
import DiscordBM
struct Actions {
static func getUserFromMention(_ mention: MentionUser) -> String {
mention.member?.nick ?? mention.global_name ?? mention.username
}
static func performAction(ctx: Gateway.MessageCreate, client: DiscordClient, resOpts: [String]) async throws {
let author = "**\(ctx.member?.nick ?? ctx.author?.global_name ?? ctx.author?.username ?? "Zundamon")**"
let dests = ctx.mentions.map(getUserFromMention).map({ "**\($0)**" })
let orig: String
let dest: String
if let firstDest = dests.first {
orig = "\(author)"
dest = "\(firstDest)"
} else {
orig = "**Zundamon**"
dest = "\(author)"
}
guard let res = resOpts.randomElement()?
.replacingOccurrences(of: "{orig}", with: orig)
.replacingOccurrences(of: "{dest}", with: dest)
else { print("retOptions empty"); return }
let retMsg = res
try await client.createMessage(
channelId: ctx.channel_id,
payload: .init(
embeds: [.init(description: retMsg)],
)
).guardSuccess()
}
static let hugRes = (try? String(contentsOfFile: "resources/choices/hug.txt", encoding: .utf8))?
.split(separator: "\n")
.map({ $0.trimmingCharacters(in: .whitespacesAndNewlines) })
static func hug(
_ args: ArraySlice<String.SubSequence>,
client: DiscordClient,
ctx: Gateway.MessageCreate
) async throws {
guard let hugRes = hugRes else { print("hug.txt not loaded"); return }
let author = "**\(ctx.member?.nick ?? ctx.author?.global_name ?? ctx.author?.username ?? "Zundamon")**"
let dests = ctx.mentions.map(getUserFromMention).map({ "**\($0)**" })
let retMsg: String
if dests.count > 1 {
let groupHugs = [
"{subjects} all huddled together.",
"{subjects} hugged each other pairwise, generating a total of **{total}** hugs.",
"{subjects} hugged each other at the same time in the same place (although I'm not sure how that works with the current understanding of spacetime).",
]
let group = [author] + dests
let total = String(group.count)
let subjects = String(group.joined(by: ", "))
guard let res = groupHugs.randomElement()?
.replacingOccurrences(of: "{subjects}", with: subjects)
.replacingOccurrences(of: "{total}", with: total)
else { print("groupHugs.randomElement() returned null"); return }
retMsg = res
} else {
let orig: String
let dest: String
if let firstDest = dests.first {
orig = "\(author)"
dest = "\(firstDest)"
} else {
orig = "**Zundamon**"
dest = "\(author)"
}
guard let res = hugRes.randomElement()?
.replacingOccurrences(of: "{orig}", with: orig)
.replacingOccurrences(of: "{dest}", with: dest)
else { print("hug.txt empty"); return }
retMsg = res
}
try await client.createMessage(
channelId: ctx.channel_id,
payload: .init(
embeds: [.init(description: retMsg)],
)
).guardSuccess()
}
static let patRes = (try? String(contentsOfFile: "resources/choices/pat.txt", encoding: .utf8))?
.split(separator: "\n")
.map({ $0.trimmingCharacters(in: .whitespacesAndNewlines) })
static func pat(
_ args: ArraySlice<String.SubSequence>,
client: DiscordClient,
ctx: Gateway.MessageCreate
) async throws {
guard let patRes = patRes else { print("pat.txt not loaded"); return }
try await performAction(ctx: ctx, client: client, resOpts: patRes)
}
}
// import DiscordBM
//
// struct Actions {
// static func getUserFromMention(_ mention: MentionUser) -> String {
// mention.member?.nick ?? mention.global_name ?? mention.username
// }
//
// static func performAction(ctx: Gateway.MessageCreate, client: DiscordClient, resOpts: [String]) async throws {
// let author = "**\(ctx.member?.nick ?? ctx.author?.global_name ?? ctx.author?.username ?? "Zundamon")**"
// let dests = ctx.mentions.map(getUserFromMention).map({ "**\($0)**" })
// let orig: String
// let dest: String
// if let firstDest = dests.first {
// orig = "\(author)"
// dest = "\(firstDest)"
// } else {
// orig = "**Zundamon**"
// dest = "\(author)"
// }
//
// guard let res = resOpts.randomElement()?
// .replacingOccurrences(of: "{orig}", with: orig)
// .replacingOccurrences(of: "{dest}", with: dest)
// else { print("retOptions empty"); return }
//
// let retMsg = res
//
// try await client.createMessage(
// channelId: ctx.channel_id,
// payload: .init(
// embeds: [.init(description: retMsg)],
// )
// ).guardSuccess()
// }
//
// static let hugRes = (try? String(contentsOfFile: "resources/choices/hug.txt", encoding: .utf8))?
// .split(separator: "\n")
// .map({ $0.trimmingCharacters(in: .whitespacesAndNewlines) })
//
// static func hug(
// _ args: ArraySlice<String.SubSequence>,
// client: DiscordClient,
// ctx: Gateway.MessageCreate
// ) async throws {
// guard let hugRes = hugRes else { print("hug.txt not loaded"); return }
// let author = "**\(ctx.member?.nick ?? ctx.author?.global_name ?? ctx.author?.username ?? "Zundamon")**"
// let dests = ctx.mentions.map(getUserFromMention).map({ "**\($0)**" })
//
// let retMsg: String
//
// if dests.count > 1 {
// let groupHugs = [
// "{subjects} all huddled together.",
// "{subjects} hugged each other pairwise, generating a total of **{total}** hugs.",
// "{subjects} hugged each other at the same time in the same place (although I'm not sure how that works with the current understanding of spacetime).",
// ]
//
// let group = [author] + dests
// let total = String(group.count)
// let subjects = String(group.joined(by: ", "))
//
// guard let res = groupHugs.randomElement()?
// .replacingOccurrences(of: "{subjects}", with: subjects)
// .replacingOccurrences(of: "{total}", with: total)
// else { print("groupHugs.randomElement() returned null"); return }
//
// retMsg = res
// } else {
// let orig: String
// let dest: String
// if let firstDest = dests.first {
// orig = "\(author)"
// dest = "\(firstDest)"
// } else {
// orig = "**Zundamon**"
// dest = "\(author)"
// }
//
// guard let res = hugRes.randomElement()?
// .replacingOccurrences(of: "{orig}", with: orig)
// .replacingOccurrences(of: "{dest}", with: dest)
// else { print("hug.txt empty"); return }
//
// retMsg = res
// }
//
// try await client.createMessage(
// channelId: ctx.channel_id,
// payload: .init(
// embeds: [.init(description: retMsg)],
// )
// ).guardSuccess()
// }
//
// static let patRes = (try? String(contentsOfFile: "resources/choices/pat.txt", encoding: .utf8))?
// .split(separator: "\n")
// .map({ $0.trimmingCharacters(in: .whitespacesAndNewlines) })
//
// static func pat(
// _ args: ArraySlice<String.SubSequence>,
// client: DiscordClient,
// ctx: Gateway.MessageCreate
// ) async throws {
// guard let patRes = patRes else { print("pat.txt not loaded"); return }
// try await performAction(ctx: ctx, client: client, resOpts: patRes)
// }
// }