REM General Bots: Data Utility & Geocoding APIs - Free Data Services REM Based on public-apis list - No authentication required REM ============================================ REM DATA KEYWORD - Generate UUID REM ============================================ DESCRIPTION "Generate a random UUID v4" uuid_data = GET "https://www.uuidgenerator.net/api/version4" TALK "🔑 Generated UUID:" TALK uuid_data RETURN uuid_data REM ============================================ REM DATA KEYWORD - Generate Multiple UUIDs REM ============================================ PARAM count AS integer LIKE 5 DESCRIPTION "Generate multiple UUIDs" TALK "🔑 Generated " + count + " UUIDs:" uuids = NEW ARRAY FOR i = 1 TO count uuid = GET "https://www.uuidgenerator.net/api/version4" uuids.PUSH(uuid) TALK i + ". " + uuid NEXT i RETURN uuids REM ============================================ REM DATA KEYWORD - Get My IP Address REM ============================================ DESCRIPTION "Get your current public IP address" ip_data = GET "https://api.ipify.org?format=json" TALK "🌐 Your Public IP Address:" TALK ip_data.ip RETURN ip_data.ip REM ============================================ REM DATA KEYWORD - Get IP Geolocation REM ============================================ PARAM ip_address AS string LIKE "8.8.8.8" DESCRIPTION "Get geolocation information for an IP address" geo_url = "http://ip-api.com/json/" + ip_address geo_data = GET geo_url IF geo_data.status = "success" THEN TALK "🌍 IP Geolocation for " + ip_address + ":" TALK "📍 Country: " + geo_data.country + " (" + geo_data.countryCode + ")" TALK "🏙️ City: " + geo_data.city TALK "📮 ZIP Code: " + geo_data.zip TALK "🗺️ Coordinates: " + geo_data.lat + ", " + geo_data.lon TALK "⏰ Timezone: " + geo_data.timezone TALK "🏢 ISP: " + geo_data.isp TALK "🏛️ Organization: " + geo_data.org RETURN geo_data ELSE TALK "❌ Could not get geolocation for IP: " + ip_address RETURN NULL END IF REM ============================================ REM DATA KEYWORD - Check if Number is Even REM ============================================ PARAM number AS integer LIKE 42 DESCRIPTION "Check if a number is even (humor API)" even_data = GET "https://api.isevenapi.xyz/api/iseven/" + number TALK "🔢 Is " + number + " even?" TALK even_data.iseven IF even_data.iseven = TRUE THEN TALK "✅ Yes, " + number + " is even!" ELSE TALK "❌ No, " + number + " is odd!" END IF RETURN even_data.iseven REM ============================================ REM DATA KEYWORD - Random Data Generator REM ============================================ DESCRIPTION "Generate random test data (name, address, etc)" random_data = GET "https://random-data-api.com/api/v2/users" TALK "👤 Random User Data:" TALK "Name: " + random_data.first_name + " " + random_data.last_name TALK "Username: " + random_data.username TALK "Email: " + random_data.email TALK "Phone: " + random_data.phone_number TALK "Date of Birth: " + random_data.date_of_birth TALK "Address: " + random_data.address.street_address TALK "City: " + random_data.address.city TALK "State: " + random_data.address.state TALK "Country: " + random_data.address.country RETURN random_data REM ============================================ REM DATA KEYWORD - Generate Lorem Ipsum REM ============================================ PARAM paragraphs AS integer LIKE 3 DESCRIPTION "Generate Lorem Ipsum placeholder text" lorem_url = "https://loripsum.net/api/" + paragraphs + "/medium/plaintext" lorem_text = GET lorem_url TALK "📝 Lorem Ipsum Text (" + paragraphs + " paragraphs):" TALK lorem_text RETURN lorem_text REM ============================================ REM DATA KEYWORD - QR Code Generator REM ============================================ PARAM text AS string LIKE "https://generalbots.ai" PARAM size AS integer LIKE 200 DESCRIPTION "Generate a QR code for any text or URL" qr_url = "https://api.qrserver.com/v1/create-qr-code/?size=" + size + "x" + size + "&data=" + text TALK "📱 QR Code generated for:" TALK text TALK "" TALK "🔗 QR Code URL:" TALK qr_url file = DOWNLOAD qr_url SEND FILE file RETURN qr_url REM ============================================ REM DATA KEYWORD - Barcode Generator REM ============================================ PARAM barcode_data AS string LIKE "1234567890" PARAM format AS "code128", "ean13", "upca", "code39" DESCRIPTION "Generate a barcode image" barcode_url = "https://barcodeapi.org/api/" + format + "/" + barcode_data TALK "📊 Barcode generated:" TALK "Format: " + format TALK "Data: " + barcode_data TALK "" TALK "🔗 Barcode URL:" TALK barcode_url file = DOWNLOAD barcode_url SEND FILE file RETURN barcode_url REM ============================================ REM DATA KEYWORD - Country Information REM ============================================ PARAM country AS string LIKE "brazil" DESCRIPTION "Get detailed information about a country" country_url = "https://restcountries.com/v3.1/name/" + country country_data = GET country_url IF country_data AND UBOUND(country_data) > 0 THEN info = country_data[0] TALK "🌍 Country Information: " + info.name.common TALK "🏛️ Official Name: " + info.name.official TALK "🏳️ Capital: " + info.capital[0] TALK "🗺️ Region: " + info.region + " (" + info.subregion + ")" TALK "👥 Population: " + info.population TALK "📏 Area: " + info.area + " km²" TALK "🌐 Languages: " + JOIN(info.languages) TALK "💰 Currencies: " + JOIN(info.currencies) TALK "⏰ Timezones: " + JOIN(info.timezones) TALK "🚗 Drives on: " + info.car.side TALK "🌐 Top Level Domain: " + info.tld[0] IF info.flags.png THEN TALK "" TALK "🏴 Flag:" file = DOWNLOAD info.flags.png SEND FILE file END IF RETURN info ELSE TALK "❌ Country not found: " + country RETURN NULL END IF REM ============================================ REM DATA KEYWORD - All Countries List REM ============================================ DESCRIPTION "Get a list of all countries" countries = GET "https://restcountries.com/v3.1/all" TALK "🌍 Total Countries: " + UBOUND(countries) TALK "" TALK "First 20 countries:" counter = 0 FOR EACH country IN countries IF counter < 20 THEN TALK "• " + country.name.common + " (" + country.cca2 + ")" END IF counter = counter + 1 END FOR IF counter > 20 THEN TALK "... and " + (counter - 20) + " more countries" END IF RETURN countries REM ============================================ REM DATA KEYWORD - Countries by Region REM ============================================ PARAM region AS "africa", "americas", "asia", "europe", "oceania" DESCRIPTION "Get countries from a specific region" region_url = "https://restcountries.com/v3.1/region/" + region countries = GET region_url TALK "🌍 Countries in " + region + ":" TALK "Total: " + UBOUND(countries) TALK "" FOR EACH country IN countries TALK "• " + country.name.common + " - Capital: " + country.capital[0] END FOR RETURN countries REM ============================================ REM DATA KEYWORD - Currency Converter REM ============================================ PARAM amount AS number LIKE 100 PARAM from_currency AS string LIKE "USD" PARAM to_currency AS string LIKE "EUR" DESCRIPTION "Convert currency amounts (Note: Free tier available)" exchange_url = "https://api.exchangerate-api.com/v4/latest/" + from_currency exchange_data = GET exchange_url IF exchange_data.rates THEN rate = exchange_data.rates[to_currency] converted = amount * rate TALK "💱 Currency Conversion:" TALK amount + " " + from_currency + " = " + converted + " " + to_currency TALK "Exchange Rate: 1 " + from_currency + " = " + rate + " " + to_currency TALK "Updated: " + exchange_data.date result = NEW OBJECT result.amount = amount result.from = from_currency result.to = to_currency result.rate = rate result.converted = converted RETURN result ELSE TALK "❌ Could not fetch exchange rates" RETURN NULL END IF REM ============================================ REM DATA KEYWORD - Timezone Info REM ============================================ PARAM timezone AS string LIKE "America/New_York" DESCRIPTION "Get current time in a specific timezone" time_url = "http://worldtimeapi.org/api/timezone/" + timezone time_data = GET time_url IF time_data.datetime THEN TALK "⏰ Current Time in " + timezone + ":" TALK "🕐 DateTime: " + time_data.datetime TALK "📅 Date: " + time_data.date TALK "⏲️ Time: " + time_data.time TALK "🌍 UTC Offset: " + time_data.utc_offset TALK "📆 Day of Week: " + time_data.day_of_week TALK "📆 Day of Year: " + time_data.day_of_year TALK "📆 Week Number: " + time_data.week_number RETURN time_data ELSE TALK "❌ Could not fetch timezone data for: " + timezone RETURN NULL END IF REM ============================================ REM DATA KEYWORD - All Timezones List REM ============================================ DESCRIPTION "Get a list of all available timezones" timezones = GET "http://worldtimeapi.org/api/timezone" TALK "🌍 Available Timezones (" + UBOUND(timezones) + " total):" TALK "" counter = 0 FOR EACH tz IN timezones IF counter < 30 THEN TALK "• " + tz END IF counter = counter + 1 END FOR IF counter > 30 THEN TALK "... and " + (counter - 30) + " more timezones" END IF RETURN timezones REM ============================================ REM DATA KEYWORD - Public Holidays REM ============================================ PARAM country_code AS string LIKE "US" PARAM year AS integer LIKE 2024 DESCRIPTION "Get public holidays for a country and year" holidays_url = "https://date.nager.at/api/v3/PublicHolidays/" + year + "/" + country_code holidays = GET holidays_url IF holidays THEN TALK "🎉 Public Holidays in " + country_code + " for " + year + ":" TALK "Total: " + UBOUND(holidays) TALK "" FOR EACH holiday IN holidays TALK "📅 " + holiday.date + " - " + holiday.name IF holiday.localName <> holiday.name THEN TALK " (" + holiday.localName + ")" END IF END FOR RETURN holidays ELSE TALK "❌ Could not fetch holidays for: " + country_code RETURN NULL END IF REM ============================================ REM DATA KEYWORD - Number Facts REM ============================================ PARAM number AS integer LIKE 42 DESCRIPTION "Get an interesting fact about a number" fact_url = "http://numbersapi.com/" + number number_fact = GET fact_url TALK "🔢 Fact about " + number + ":" TALK number_fact RETURN number_fact REM ============================================ REM DATA KEYWORD - Random Number Fact REM ============================================ DESCRIPTION "Get a random number fact" random_fact = GET "http://numbersapi.com/random" TALK "🔢 Random Number Fact:" TALK random_fact RETURN random_fact REM ============================================ REM DATA KEYWORD - Date Facts REM ============================================ PARAM month AS integer LIKE 3 PARAM day AS integer LIKE 14 DESCRIPTION "Get interesting facts about a specific date" date_url = "http://numbersapi.com/" + month + "/" + day + "/date" date_fact = GET date_url TALK "📅 Fact about " + month + "/" + day + ":" TALK date_fact RETURN date_fact REM ============================================ REM DATA KEYWORD - Math Fact REM ============================================ PARAM number AS integer LIKE 1729 DESCRIPTION "Get a mathematical fact about a number" math_url = "http://numbersapi.com/" + number + "/math" math_fact = GET math_url TALK "🧮 Math Fact about " + number + ":" TALK math_fact RETURN math_fact REM ============================================ REM DATA KEYWORD - Yes or No Decision REM ============================================ DESCRIPTION "Get a random Yes or No answer" decision = GET "https://yesno.wtf/api" answer = decision.answer image = decision.image TALK "🎲 Random Decision:" TALK UCASE(answer) + "!" file = DOWNLOAD image SEND FILE file RETURN decision REM ============================================ REM DATA KEYWORD - Postcode Lookup UK REM ============================================ PARAM postcode AS string LIKE "SW1A1AA" DESCRIPTION "Look up UK postcode information" postcode_clean = REPLACE(postcode, " ", "") postcode_url = "https://api.postcodes.io/postcodes/" + postcode_clean postcode_data = GET postcode_url IF postcode_data.status = 200 THEN result = postcode_data.result TALK "📮 UK Postcode Information:" TALK "Postcode: " + result.postcode TALK "🏙️ Region: " + result.region TALK "🗺️ District: " + result.admin_district TALK "📍 Coordinates: " + result.latitude + ", " + result.longitude TALK "🏛️ Parliamentary Constituency: " + result.parliamentary_constituency TALK "🌍 Country: " + result.country RETURN result ELSE TALK "❌ Invalid postcode: " + postcode RETURN NULL END IF REM ============================================ REM DATA KEYWORD - Brazilian CEP Lookup REM ============================================ PARAM cep AS string LIKE "01310-100" DESCRIPTION "Look up Brazilian postal code (CEP) information" cep_clean = REPLACE(cep, "-", "") cep_url = "https://viacep.com.br/ws/" + cep_clean + "/json/" cep_data = GET cep_url IF NOT cep_data.erro THEN TALK "📮 CEP Information:" TALK "CEP: " + cep_data.cep TALK "🏙️ City: " + cep_data.localidade + " - " + cep_data.uf TALK "🏘️ Neighborhood: " + cep_data.bairro TALK "🛣️ Street: " + cep_data.logradouro TALK "🗺️ Region: " + cep_data.regiao TALK "☎️ DDD: " + cep_data.ddd RETURN cep_data ELSE TALK "❌ Invalid CEP: " + cep RETURN NULL END IF REM ============================================ REM DATA KEYWORD - JSON Placeholder Post REM ============================================ DESCRIPTION "Get sample post data for testing" post = GET "https://jsonplaceholder.typicode.com/posts/1" TALK "📝 Sample Post Data:" TALK "Title: " + post.title TALK "User ID: " + post.userId TALK "Post ID: " + post.id TALK "" TALK "Body:" TALK post.body RETURN post REM ============================================ REM DATA KEYWORD - Random User Generator REM ============================================ DESCRIPTION "Generate a random user with realistic data" user_data = GET "https://randomuser.me/api/" IF user_data.results AND UBOUND(user_data.results) > 0 THEN user = user_data.results[0] TALK "👤 Random User Generated:" TALK "Name: " + user.name.first + " " + user.name.last TALK "Gender: " + user.gender TALK "📧 Email: " + user.email TALK "📱 Phone: " + user.phone TALK "🎂 Date of Birth: " + user.dob.date TALK "📍 Location: " + user.location.city + ", " + user.location.state + ", " + user.location.country TALK "📮 Postcode: " + user.location.postcode TALK "🌐 Nationality: " + user.nat TALK "" TALK "📷 Picture: " + user.picture.large file = DOWNLOAD user.picture.large SEND FILE file RETURN user ELSE TALK "❌ Could not generate random user" RETURN NULL END IF REM ============================================ REM DATA KEYWORD - Multiple Random Users REM ============================================ PARAM count AS integer LIKE 5 DESCRIPTION "Generate multiple random users" users_url = "https://randomuser.me/api/?results=" + count users_data = GET users_url IF users_data.results THEN TALK "👥 Generated " + count + " Random Users:" TALK "" counter = 1 FOR EACH user IN users_data.results TALK counter + ". " + user.name.first + " " + user.name.last TALK " Email: " + user.email TALK " Location: " + user.location.city + ", " + user.location.country TALK "" counter = counter + 1 END FOR RETURN users_data.results ELSE TALK "❌ Could not generate random users" RETURN NULL END IF