Changed incorrect references to .vbs files to .bas and corrected USE_WEBSITE keyword naming. Also added missing fields to API response structure and clarified that start.bas is optional for bots.
503 lines
13 KiB
QBasic
503 lines
13 KiB
QBasic
REM General Bots: Food & Drink APIs - Free Food Data Integration
|
|
REM Based on public-apis list - No authentication required
|
|
|
|
REM ============================================
|
|
REM FOOD KEYWORD - Random Coffee Image
|
|
REM ============================================
|
|
DESCRIPTION "Get a random coffee image"
|
|
|
|
coffee_data = GET "https://coffee.alexflipnote.dev/random.json"
|
|
|
|
image_url = coffee_data.file
|
|
|
|
TALK "☕ Random Coffee Image:"
|
|
TALK image_url
|
|
|
|
file = DOWNLOAD image_url
|
|
SEND FILE file
|
|
|
|
RETURN image_url
|
|
|
|
REM ============================================
|
|
REM FOOD KEYWORD - Random Food Dish
|
|
REM ============================================
|
|
DESCRIPTION "Get a random food dish image from Foodish"
|
|
|
|
food_data = GET "https://foodish-api.herokuapp.com/api/"
|
|
|
|
image_url = food_data.image
|
|
|
|
TALK "🍽️ Random Food Dish:"
|
|
TALK image_url
|
|
|
|
file = DOWNLOAD image_url
|
|
SEND FILE file
|
|
|
|
RETURN image_url
|
|
|
|
REM ============================================
|
|
REM FOOD KEYWORD - Random Food by Category
|
|
REM ============================================
|
|
PARAM category AS "biryani", "burger", "butter-chicken", "dessert", "dosa", "idly", "pasta", "pizza", "rice", "samosa"
|
|
DESCRIPTION "Get a random food image from a specific category"
|
|
|
|
food_url = "https://foodish-api.herokuapp.com/api/images/" + category
|
|
|
|
food_data = GET food_url
|
|
|
|
image_url = food_data.image
|
|
|
|
TALK "🍽️ Random " + category + ":"
|
|
TALK image_url
|
|
|
|
file = DOWNLOAD image_url
|
|
SEND FILE file
|
|
|
|
RETURN image_url
|
|
|
|
REM ============================================
|
|
REM FOOD KEYWORD - Random Meal Recipe
|
|
REM ============================================
|
|
DESCRIPTION "Get a random meal recipe from TheMealDB"
|
|
|
|
meal_data = GET "https://www.themealdb.com/api/json/v1/1/random.php"
|
|
|
|
IF meal_data.meals AND UBOUND(meal_data.meals) > 0 THEN
|
|
meal = meal_data.meals[0]
|
|
|
|
TALK "🍳 Random Meal Recipe: " + meal.strMeal
|
|
TALK "🌍 Category: " + meal.strCategory + " | Area: " + meal.strArea
|
|
TALK ""
|
|
TALK "📝 Instructions:"
|
|
TALK meal.strInstructions
|
|
TALK ""
|
|
TALK "📷 Image: " + meal.strMealThumb
|
|
|
|
IF meal.strYoutube THEN
|
|
TALK "🎥 Video: " + meal.strYoutube
|
|
END IF
|
|
|
|
TALK ""
|
|
TALK "🥘 Ingredients:"
|
|
|
|
REM Extract ingredients
|
|
FOR i = 1 TO 20
|
|
ingredient = meal["strIngredient" + i]
|
|
measure = meal["strMeasure" + i]
|
|
|
|
IF ingredient <> "" AND ingredient <> NULL THEN
|
|
TALK "• " + measure + " " + ingredient
|
|
END IF
|
|
NEXT i
|
|
|
|
file = DOWNLOAD meal.strMealThumb
|
|
SEND FILE file
|
|
|
|
RETURN meal
|
|
ELSE
|
|
TALK "❌ Could not fetch meal recipe"
|
|
RETURN NULL
|
|
END IF
|
|
|
|
REM ============================================
|
|
REM FOOD KEYWORD - Search Meal by Name
|
|
REM ============================================
|
|
PARAM meal_name AS string LIKE "chicken"
|
|
DESCRIPTION "Search for meals by name"
|
|
|
|
search_url = "https://www.themealdb.com/api/json/v1/1/search.php?s=" + meal_name
|
|
|
|
meal_data = GET search_url
|
|
|
|
IF meal_data.meals THEN
|
|
TALK "🔍 Found meals matching '" + meal_name + "':"
|
|
TALK ""
|
|
|
|
counter = 0
|
|
FOR EACH meal IN meal_data.meals
|
|
IF counter < 5 THEN
|
|
TALK "🍽️ " + meal.strMeal
|
|
TALK " Category: " + meal.strCategory + " | Area: " + meal.strArea
|
|
TALK " ID: " + meal.idMeal
|
|
TALK ""
|
|
END IF
|
|
counter = counter + 1
|
|
END FOR
|
|
|
|
IF counter > 5 THEN
|
|
TALK "... and " + (counter - 5) + " more meals"
|
|
END IF
|
|
|
|
RETURN meal_data.meals
|
|
ELSE
|
|
TALK "❌ No meals found for: " + meal_name
|
|
RETURN NULL
|
|
END IF
|
|
|
|
REM ============================================
|
|
REM FOOD KEYWORD - Random Cocktail Recipe
|
|
REM ============================================
|
|
DESCRIPTION "Get a random cocktail recipe from TheCocktailDB"
|
|
|
|
cocktail_data = GET "https://www.thecocktaildb.com/api/json/v1/1/random.php"
|
|
|
|
IF cocktail_data.drinks AND UBOUND(cocktail_data.drinks) > 0 THEN
|
|
drink = cocktail_data.drinks[0]
|
|
|
|
TALK "🍹 Random Cocktail: " + drink.strDrink
|
|
TALK "🏷️ Category: " + drink.strCategory
|
|
TALK "🥃 Glass: " + drink.strGlass
|
|
TALK ""
|
|
TALK "📝 Instructions:"
|
|
TALK drink.strInstructions
|
|
TALK ""
|
|
TALK "🍸 Ingredients:"
|
|
|
|
REM Extract ingredients
|
|
FOR i = 1 TO 15
|
|
ingredient = drink["strIngredient" + i]
|
|
measure = drink["strMeasure" + i]
|
|
|
|
IF ingredient <> "" AND ingredient <> NULL THEN
|
|
IF measure <> "" AND measure <> NULL THEN
|
|
TALK "• " + measure + " " + ingredient
|
|
ELSE
|
|
TALK "• " + ingredient
|
|
END IF
|
|
END IF
|
|
NEXT i
|
|
|
|
TALK ""
|
|
TALK "📷 Image: " + drink.strDrinkThumb
|
|
|
|
file = DOWNLOAD drink.strDrinkThumb
|
|
SEND FILE file
|
|
|
|
RETURN drink
|
|
ELSE
|
|
TALK "❌ Could not fetch cocktail recipe"
|
|
RETURN NULL
|
|
END IF
|
|
|
|
REM ============================================
|
|
REM FOOD KEYWORD - Search Cocktail by Name
|
|
REM ============================================
|
|
PARAM cocktail_name AS string LIKE "margarita"
|
|
DESCRIPTION "Search for cocktails by name"
|
|
|
|
search_url = "https://www.thecocktaildb.com/api/json/v1/1/search.php?s=" + cocktail_name
|
|
|
|
cocktail_data = GET search_url
|
|
|
|
IF cocktail_data.drinks THEN
|
|
TALK "🔍 Found cocktails matching '" + cocktail_name + "':"
|
|
TALK ""
|
|
|
|
FOR EACH drink IN cocktail_data.drinks
|
|
TALK "🍹 " + drink.strDrink
|
|
TALK " Category: " + drink.strCategory + " | Glass: " + drink.strGlass
|
|
TALK " Alcoholic: " + drink.strAlcoholic
|
|
TALK ""
|
|
END FOR
|
|
|
|
RETURN cocktail_data.drinks
|
|
ELSE
|
|
TALK "❌ No cocktails found for: " + cocktail_name
|
|
RETURN NULL
|
|
END IF
|
|
|
|
REM ============================================
|
|
REM FOOD KEYWORD - Search Cocktail by Ingredient
|
|
REM ============================================
|
|
PARAM ingredient AS string LIKE "vodka"
|
|
DESCRIPTION "Search for cocktails by ingredient"
|
|
|
|
search_url = "https://www.thecocktaildb.com/api/json/v1/1/filter.php?i=" + ingredient
|
|
|
|
cocktail_data = GET search_url
|
|
|
|
IF cocktail_data.drinks THEN
|
|
TALK "🔍 Found " + UBOUND(cocktail_data.drinks) + " cocktails with " + ingredient + ":"
|
|
TALK ""
|
|
|
|
counter = 0
|
|
FOR EACH drink IN cocktail_data.drinks
|
|
IF counter < 10 THEN
|
|
TALK "🍹 " + drink.strDrink + " (ID: " + drink.idDrink + ")"
|
|
END IF
|
|
counter = counter + 1
|
|
END FOR
|
|
|
|
IF counter > 10 THEN
|
|
TALK "... and " + (counter - 10) + " more cocktails"
|
|
END IF
|
|
|
|
RETURN cocktail_data.drinks
|
|
ELSE
|
|
TALK "❌ No cocktails found with ingredient: " + ingredient
|
|
RETURN NULL
|
|
END IF
|
|
|
|
REM ============================================
|
|
REM FOOD KEYWORD - Fruit Information
|
|
REM ============================================
|
|
PARAM fruit_name AS string LIKE "apple"
|
|
DESCRIPTION "Get nutritional information about a fruit"
|
|
|
|
fruit_url = "https://fruityvice.com/api/fruit/" + fruit_name
|
|
|
|
fruit_data = GET fruit_url
|
|
|
|
IF fruit_data.name THEN
|
|
TALK "🍎 Fruit Information: " + fruit_data.name
|
|
TALK "🏷️ Family: " + fruit_data.family
|
|
TALK "🌳 Genus: " + fruit_data.genus
|
|
TALK "🆔 ID: " + fruit_data.id
|
|
TALK ""
|
|
TALK "📊 Nutritional Information (per 100g):"
|
|
TALK "• Calories: " + fruit_data.nutritions.calories
|
|
TALK "• Carbohydrates: " + fruit_data.nutritions.carbohydrates + "g"
|
|
TALK "• Protein: " + fruit_data.nutritions.protein + "g"
|
|
TALK "• Fat: " + fruit_data.nutritions.fat + "g"
|
|
TALK "• Sugar: " + fruit_data.nutritions.sugar + "g"
|
|
|
|
RETURN fruit_data
|
|
ELSE
|
|
TALK "❌ Fruit not found: " + fruit_name
|
|
RETURN NULL
|
|
END IF
|
|
|
|
REM ============================================
|
|
REM FOOD KEYWORD - All Fruits List
|
|
REM ============================================
|
|
DESCRIPTION "Get a list of all available fruits"
|
|
|
|
fruits_data = GET "https://fruityvice.com/api/fruit/all"
|
|
|
|
IF fruits_data THEN
|
|
TALK "🍓 Available Fruits (" + UBOUND(fruits_data) + " total):"
|
|
TALK ""
|
|
|
|
counter = 0
|
|
FOR EACH fruit IN fruits_data
|
|
IF counter < 20 THEN
|
|
TALK "• " + fruit.name + " (" + fruit.family + ")"
|
|
END IF
|
|
counter = counter + 1
|
|
END FOR
|
|
|
|
IF counter > 20 THEN
|
|
TALK "... and " + (counter - 20) + " more fruits"
|
|
END IF
|
|
|
|
RETURN fruits_data
|
|
ELSE
|
|
TALK "❌ Could not fetch fruits list"
|
|
RETURN NULL
|
|
END IF
|
|
|
|
REM ============================================
|
|
REM FOOD KEYWORD - Fruits by Family
|
|
REM ============================================
|
|
PARAM family AS string LIKE "Rosaceae"
|
|
DESCRIPTION "Get fruits from a specific family"
|
|
|
|
family_url = "https://fruityvice.com/api/fruit/family/" + family
|
|
|
|
fruits_data = GET family_url
|
|
|
|
IF fruits_data THEN
|
|
TALK "🍎 Fruits from " + family + " family:"
|
|
TALK ""
|
|
|
|
FOR EACH fruit IN fruits_data
|
|
TALK "• " + fruit.name + " (Genus: " + fruit.genus + ")"
|
|
END FOR
|
|
|
|
RETURN fruits_data
|
|
ELSE
|
|
TALK "❌ No fruits found for family: " + family
|
|
RETURN NULL
|
|
END IF
|
|
|
|
REM ============================================
|
|
REM FOOD KEYWORD - Random Taco Recipe
|
|
REM ============================================
|
|
DESCRIPTION "Get a random taco recipe from TacoFancy"
|
|
|
|
taco_data = GET "http://taco-randomizer.herokuapp.com/random/"
|
|
|
|
IF taco_data THEN
|
|
TALK "🌮 Random Taco Recipe:"
|
|
TALK ""
|
|
|
|
IF taco_data.base_layer THEN
|
|
TALK "🫓 Base Layer: " + taco_data.base_layer.name
|
|
TALK taco_data.base_layer.recipe
|
|
TALK ""
|
|
END IF
|
|
|
|
IF taco_data.mixin THEN
|
|
TALK "🥗 Mixin: " + taco_data.mixin.name
|
|
TALK taco_data.mixin.recipe
|
|
TALK ""
|
|
END IF
|
|
|
|
IF taco_data.condiment THEN
|
|
TALK "🧂 Condiment: " + taco_data.condiment.name
|
|
TALK taco_data.condiment.recipe
|
|
TALK ""
|
|
END IF
|
|
|
|
IF taco_data.seasoning THEN
|
|
TALK "🌶️ Seasoning: " + taco_data.seasoning.name
|
|
TALK taco_data.seasoning.recipe
|
|
TALK ""
|
|
END IF
|
|
|
|
IF taco_data.shell THEN
|
|
TALK "🌮 Shell: " + taco_data.shell.name
|
|
TALK taco_data.shell.recipe
|
|
END IF
|
|
|
|
RETURN taco_data
|
|
ELSE
|
|
TALK "❌ Could not fetch taco recipe"
|
|
RETURN NULL
|
|
END IF
|
|
|
|
REM ============================================
|
|
REM FOOD KEYWORD - PunkAPI Beer Info
|
|
REM ============================================
|
|
DESCRIPTION "Get a random beer recipe from PunkAPI"
|
|
|
|
beer_data = GET "https://api.punkapi.com/v2/beers/random"
|
|
|
|
IF beer_data AND UBOUND(beer_data) > 0 THEN
|
|
beer = beer_data[0]
|
|
|
|
TALK "🍺 Beer Information: " + beer.name
|
|
TALK "📝 Tagline: " + beer.tagline
|
|
TALK ""
|
|
TALK "📊 Details:"
|
|
TALK "• ABV: " + beer.abv + "%"
|
|
TALK "• IBU: " + beer.ibu
|
|
TALK "• EBC: " + beer.ebc
|
|
TALK "• First Brewed: " + beer.first_brewed
|
|
TALK ""
|
|
TALK "📖 Description:"
|
|
TALK beer.description
|
|
TALK ""
|
|
|
|
IF beer.food_pairing THEN
|
|
TALK "🍽️ Food Pairing:"
|
|
FOR EACH pairing IN beer.food_pairing
|
|
TALK "• " + pairing
|
|
END FOR
|
|
TALK ""
|
|
END IF
|
|
|
|
IF beer.brewers_tips THEN
|
|
TALK "💡 Brewer's Tips:"
|
|
TALK beer.brewers_tips
|
|
END IF
|
|
|
|
IF beer.image_url THEN
|
|
TALK ""
|
|
TALK "📷 Image: " + beer.image_url
|
|
file = DOWNLOAD beer.image_url
|
|
SEND FILE file
|
|
END IF
|
|
|
|
RETURN beer
|
|
ELSE
|
|
TALK "❌ Could not fetch beer information"
|
|
RETURN NULL
|
|
END IF
|
|
|
|
REM ============================================
|
|
REM FOOD KEYWORD - Search Beer by Name
|
|
REM ============================================
|
|
PARAM beer_name AS string LIKE "punk"
|
|
DESCRIPTION "Search for beers by name"
|
|
|
|
search_url = "https://api.punkapi.com/v2/beers?beer_name=" + beer_name
|
|
|
|
beer_data = GET search_url
|
|
|
|
IF beer_data AND UBOUND(beer_data) > 0 THEN
|
|
TALK "🔍 Found " + UBOUND(beer_data) + " beer(s) matching '" + beer_name + "':"
|
|
TALK ""
|
|
|
|
FOR EACH beer IN beer_data
|
|
TALK "🍺 " + beer.name
|
|
TALK " " + beer.tagline
|
|
TALK " ABV: " + beer.abv + "% | IBU: " + beer.ibu
|
|
TALK " First Brewed: " + beer.first_brewed
|
|
TALK ""
|
|
END FOR
|
|
|
|
RETURN beer_data
|
|
ELSE
|
|
TALK "❌ No beers found for: " + beer_name
|
|
RETURN NULL
|
|
END IF
|
|
|
|
REM ============================================
|
|
REM FOOD KEYWORD - High ABV Beers
|
|
REM ============================================
|
|
PARAM min_abv AS number LIKE 8.0
|
|
DESCRIPTION "Get beers with ABV higher than specified"
|
|
|
|
abv_url = "https://api.punkapi.com/v2/beers?abv_gt=" + min_abv
|
|
|
|
beer_data = GET abv_url
|
|
|
|
IF beer_data THEN
|
|
TALK "🍺 Beers with ABV > " + min_abv + "%:"
|
|
TALK ""
|
|
|
|
counter = 0
|
|
FOR EACH beer IN beer_data
|
|
IF counter < 10 THEN
|
|
TALK "🍺 " + beer.name + " - " + beer.abv + "% ABV"
|
|
TALK " " + beer.tagline
|
|
TALK ""
|
|
END IF
|
|
counter = counter + 1
|
|
END FOR
|
|
|
|
IF counter > 10 THEN
|
|
TALK "... and " + (counter - 10) + " more beers"
|
|
END IF
|
|
|
|
RETURN beer_data
|
|
ELSE
|
|
TALK "❌ Could not fetch high ABV beers"
|
|
RETURN NULL
|
|
END IF
|
|
|
|
REM ============================================
|
|
REM FOOD KEYWORD - Bacon Ipsum Text
|
|
REM ============================================
|
|
PARAM paragraphs AS integer LIKE 3
|
|
DESCRIPTION "Generate bacon-themed lorem ipsum text"
|
|
|
|
bacon_url = "https://baconipsum.com/api/?type=meat-and-filler¶s=" + paragraphs
|
|
|
|
bacon_text = GET bacon_url
|
|
|
|
IF bacon_text THEN
|
|
TALK "🥓 Bacon Ipsum Text:"
|
|
TALK ""
|
|
|
|
FOR EACH paragraph IN bacon_text
|
|
TALK paragraph
|
|
TALK ""
|
|
END FOR
|
|
|
|
RETURN bacon_text
|
|
ELSE
|
|
TALK "❌ Could not generate bacon ipsum"
|
|
RETURN NULL
|
|
END IF
|