summaryrefslogtreecommitdiff
path: root/forgebot_proper.sh
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2024-10-06 17:38:27 +0200
committerLinnea Gräf <nea@nea.moe>2024-10-06 17:38:27 +0200
commit788470b8fd1e645d41d456183443fb4f4534c511 (patch)
tree3507d63da09752a273db0a70a427eaf1271df6ee /forgebot_proper.sh
parent12d3727fa5308149953973a38029a2344a13719d (diff)
downloadforgebot-788470b8fd1e645d41d456183443fb4f4534c511.tar.gz
forgebot-788470b8fd1e645d41d456183443fb4f4534c511.tar.bz2
forgebot-788470b8fd1e645d41d456183443fb4f4534c511.zip
snapshot Sun Oct 6 05:38:27 PM CEST 2024
Diffstat (limited to 'forgebot_proper.sh')
-rwxr-xr-xforgebot_proper.sh76
1 files changed, 60 insertions, 16 deletions
diff --git a/forgebot_proper.sh b/forgebot_proper.sh
index 676803d..efb2835 100755
--- a/forgebot_proper.sh
+++ b/forgebot_proper.sh
@@ -10,12 +10,15 @@ if [[ x"$HYPIXEL_KEY" == x ]]; then
fi
source "$(dirname -- "$0")"/atrocity/load.sh
source "$(dirname -- "$0")"/hypixel_api.sh
+source "$(dirname -- "$0")"/data.sh
find_option() {
# Usage: find_option <data> <name>
printf '%s' "$1" | jq -r '.data.options[] | select(.name == "'"$2"'")| .value'
}
+disallow_mentions='"allowed_mentions": {"parse":[]}'
+
atrocity_on_INTERACTION_CREATE() {
local type
type="$(printf '%s' "$1" | jq -r .type)"
@@ -26,37 +29,78 @@ atrocity_on_INTERACTION_CREATE() {
#MODAL_SUBMIT 5
id=$(printf '%s' "$1" | jq -r .id)
token=$(printf '%s' "$1" | jq -r .token)
- atrocity_debug Processing interaction with id $id and token $token of type $type
+ user=$(printf '%s' "$1" | jq -r .member.user.id)
+ atrocity_debug Processing interaction with id $id and token $token of type $type from $user
if [[ $type == 2 ]]; then
command_name=$(printf '%s' "$1" | jq -r .data.name)
atrocity_debug Executing command $command_name
if [[ $command_name == register ]]; then
username="$(find_option "$1" username)"
atrocity_debug "Registering user with name $username"
- # TODO first acc then edit
+ # TODO first ack then edit
minecraft_uuid="$(curl "https://mowojang.matdoes.dev/$username" 2>/dev/null | jq -r .id)"
atrocity_debug "Got uuid: $minecraft_uuid"
- hypixel_profiles="$(get_profiles_by_uuid "$minecraft_uuid")"
- components="$(printf '%s' "$hypixel_profiles" | jq -r '[[.profiles[] | ({"type": 2, "label": .cute_name, "style": 1, "custom_id": (.profile_id + " '"$minecraft_uuid"'")})]|_nwise(3)|{"type": 1, "components": .}]')" # Frucht emoji pro profile
- atrocity_rest POST "interactions/$id/$token/callback" "$(cat << EOF
+ if has_watched_account $user $minecraft_uuid; then
+ atrocity_rest POST "interactions/$id/$token/callback" "$(cat << EOF
+{
+ "type": 4,
+ "data": {
+ "content": "You have already registered the account with name \`$username\` and uuid \`$minecraft_uuid\`.",
+ $disallow_mentions
+ }
+}
+EOF
+ )"
+ else
+ add_watched_account $user $minecraft_uuid
+ atrocity_rest POST "interactions/$id/$token/callback" "$(cat << EOF
{
"type": 4,
"data": {
- "content": "Trying to register with name \`$username\` and uuid \`$minecraft_uuid\`",
- "components": $components
+ "content": "Trying to register with name \`$username\` and uuid \`$minecraft_uuid\`.",
+ $disallow_mentions
}
}
EOF
- )"
+ )"
+ fi
+ fi
+ if [[ $command_name == unregister ]]; then
+ atrocity_debug "listing"
+ # TODO first ack then edit
+ list_watchers "$user"
+ fi
+ if [[ $command_name == unregister ]]; then
+ username="$(find_option "$1" username)"
+ atrocity_debug "Unregistering user with name $username"
+ # TODO first ack then edit
+ minecraft_uuid="$(curl "https://mowojang.matdoes.dev/$username" 2>/dev/null | jq -r .id)"
+ atrocity_debug "Got uuid: $minecraft_uuid"
+ if ! has_watched_account $user $minecraft_uuid; then
+ atrocity_rest POST "interactions/$id/$token/callback" "$(cat << EOF
+{
+ "type": 4,
+ "data": {
+ "content": "You are not watching the account with name \`$username\` and uuid \`$minecraft_uuid\`.",
+ $disallow_mentions
+ }
+}
+EOF
+ )"
+ else
+ remove_watched_account $user $minecraft_uuid
+ atrocity_rest POST "interactions/$id/$token/callback" "$(cat << EOF
+{
+ "type": 4,
+ "data": {
+ "content": "Unregister the name \`$username\` and uuid \`$minecraft_uuid\`.",
+ $disallow_mentions
+ }
+}
+EOF
+ )"
+ fi
fi
- fi
- if [[ $type == 3 ]]; then
- atrocity_debug "$1"
- custom_id=($(printf '%s' "$1" | jq -r .data.custom_id))
- profile_id=${custom_id[0]}
- minecraft_id=${custom_id[1]}
- user_id="$(printf '%s' "$1" | jq -r .member.user.id)"
- atrocity_debug "Profile: $profile_id, Minecraft: $minecraft_id, User: $user_id"
fi
}
atrocity_on_unknown() {