What Is a Python Bot?
A Python bot is simply a script that performs automated tasks — it could send messages, scrape websites, respond to commands, or interact with APIs. The beauty of Python is that you can go from zero to a working bot surprisingly quickly.
In this tutorial, we'll build a simple command-line bot that responds to user input, reads data from the web, and runs on a schedule. By the end, you'll have the foundational skills to take your automation further.
Prerequisites
- Python 3.8 or higher installed on your machine
- A code editor (VS Code, PyCharm, or even Notepad++)
- Basic familiarity with variables and functions (helpful but not required)
Step 1: Set Up Your Environment
Start by creating a dedicated project folder and a virtual environment. This keeps your dependencies clean and isolated.
mkdir my_first_bot
cd my_first_bot
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
Install the requests library, which lets your bot fetch data from the internet:
pip install requests
Step 2: Write Your First Bot Logic
Create a file called bot.py and add the following:
import requests
def get_joke():
url = "https://official-joke-api.appspot.com/random_joke"
response = requests.get(url)
data = response.json()
return f"{data['setup']} ... {data['punchline']}"
def greet_user(name):
return f"Hello, {name}! Here's a joke for you:\n{get_joke()}"
if __name__ == "__main__":
user = input("What's your name? ")
print(greet_user(user))
Run it with python bot.py. Your bot will ask for a name, fetch a joke from a public API, and deliver it personally. Simple, but it demonstrates the core loop of every bot: receive input → process → respond.
Step 3: Add Basic Decision Logic
Real bots make decisions. Let's add a basic command handler:
def handle_command(command):
if command == "joke":
return get_joke()
elif command == "help":
return "Available commands: joke, help, quit"
elif command == "quit":
return None
else:
return "Unknown command. Type 'help' for options."
while True:
cmd = input("Enter command: ").strip().lower()
result = handle_command(cmd)
if result is None:
print("Goodbye!")
break
print(result)
Step 4: Understanding the Bot Loop
Every interactive bot follows a pattern called the event loop:
- Wait for input (a message, a timer, a webhook)
- Parse and understand the input
- Perform an action (API call, database query, calculation)
- Send a response
- Return to step 1
This same pattern applies whether you're building a Discord bot, a Telegram bot, or a web scraper.
Where to Go From Here
Once you're comfortable with the basics, consider exploring:
- Discord bots using the
discord.pylibrary - Telegram bots via the
python-telegram-botpackage - Web scrapers with
BeautifulSoupandSelenium - Scheduled tasks using
scheduleorAPScheduler
The foundation you've built today — environment setup, API calls, command handling, and loops — applies directly to all of these. Keep experimenting, and your bots will grow with you.