diff options
Diffstat (limited to 'forgebot_proper.sh')
-rwxr-xr-x | forgebot_proper.sh | 76 |
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() { |