Lag din første Telegram-bot med Python: En omfattende guide
Lær hvordan du lager en kraftig Telegram-bot med Python, helt gratis. Denne steg-for-steg-guiden dekker alt fra API-oppsett til utrulling av din tilpassede Telegram-bot.
Å bygge en tilpasset Telegram-bot med Python gir enorm fleksibilitet og kraft. Enten du ønsker å automatisere oppgaver, lage interaktive tjenester, eller bare eksperimentere med Telegrams robuste API, er Python et utmerket valg på grunn av sin enkelhet og omfattende biblioteker. I denne omfattende guiden vil vi lede deg gjennom hele prosessen med å lage ditt første Telegram bot Python-prosjekt, fra å sette opp utviklingsmiljøet til å skrive funksjonell kode og rulle ut boten din.
Pythons lesbarhet og det aktive fellesskapet som støtter python-telegram-bot-biblioteket, gjør det til et fantastisk utgangspunkt for både nybegynnere og erfarne utviklere. Ved slutten av denne guiden vil du ha en fullt operativ Telegram-bot klar til å samhandle med brukere.
Hovedpunkter
- Du vil lære hvordan du registrerer boten din med BotFather og får en API-token.
- Vi vil dekke oppsett av ditt Python-utviklingsmiljø og installasjon av nødvendige biblioteker.
- Du vil skrive kode for å håndtere grunnleggende kommandoer og meldinger.
- Vi vil utforske hvordan du legger til mer sofistikerte funksjoner i boten din.
- Du vil forstå det grunnleggende om å rulle ut din Telegram bot Python-applikasjon.
1. Sette opp din Telegram-bot og utviklingsmiljø
Før du dykker inn i koden, må du sette opp boten din på Telegram og forberede ditt Python-miljø.
1.1 Opprette boten din med BotFather
Det første steget for enhver Telegram-bot er å registrere den med BotFather, Telegrams offisielle bot for å administrere andre boter.
- Åpne Telegram og søk etter @BotFather: I din Telegram-app, søk etter “@BotFather” og start en chat. Sørg for at det er den offisielle med et blått verifisert merke.
- Start bot-opprettelsesprosessen: Skriv
/newbotog send meldingen. - Velg et navn: BotFather vil spørre om et navn for boten din. Dette er den menneskevennlige tittelen som brukere vil se (f.eks. “Min Fantastiske Bot”).
- Velg et brukernavn: Deretter velger du et unikt brukernavn for boten din. Dette må ende med “bot” (f.eks.
min_fantastiske_bot). Hvis brukernavnet er tatt, vil BotFather be deg om å prøve et annet. - Motta din API-token: Når det er vellykket, vil BotFather gi deg en HTTP API-token. Denne tokenen er avgjørende, da den fungerer som et passord for boten din. Hold den sikker og del den aldri offentlig. Den vil se omtrent slik ut:
123456:ABC-DEF1234ghIkl-zyx57W23L1qR_456.
1.2 Installere Python og pip
Hvis du ikke allerede har Python installert, last ned den nyeste stabile versjonen fra den offisielle Python-nettsiden (https://www.python.org/downloads/). Under installasjonen, sørg for å krysse av for “Add Python to PATH” for enklere tilgang via kommandolinjen.
pip er Pythons pakkeinstallerer, og den kommer vanligvis forhåndsinstallert med Python. Du kan verifisere dine Python- og pip-installasjoner ved å åpne terminalen eller kommandoprompten og skrive:
python --version
pip --version
1.3 Installere python-telegram-bot-biblioteket
python-telegram-bot-biblioteket er en populær og robust wrapper for Telegram Bot API. Det forenkler interaksjoner med API-et, noe som gjør det mye enklere å utvikle boten din.
Installer det ved hjelp av pip:
pip install python-telegram-bot
Du har nå vellykket satt opp boten din og utviklingsmiljøet. La oss gå videre til å skrive litt kode!
2. Din første Telegram Bot Python-kode: Ekko-boten
Vi starter med en klassiker: en ekko-bot. Denne boten vil ganske enkelt gjenta enhver melding den mottar. Dette enkle eksemplet lærer deg kjernekonseptene for meldingshåndtering.
2.1 Importere nødvendige moduler
Opprett en ny Python-fil (f.eks. min_telegram_bot.py) og start med å importere de nødvendige komponentene fra telegram-biblioteket.
from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters
import logging
import os
Update: Representerer en innkommende oppdatering fra Telegram (f.eks. en ny melding, en kommando).Application: Hovedklassen som administrerer botens livssyklus.CommandHandler: Brukes til å registrere håndterere for spesifikke kommandoer (f.eks./start,/help).MessageHandler: Brukes til å registrere håndterere for ulike typer meldinger (tekst, bilder, etc.).filters: Gir praktiske filtre for å spesifisere hvilke meldinger enMessageHandlerskal svare på.logging: God praksis for feilsøking og forståelse av botens oppførsel.os: For å sikkert laste API-tokenet ditt fra miljøvariabler.
2.2 Sette opp logging
Logging er essensielt for feilsøking. Legg til følgende linjer i skriptet ditt:
# Aktiver logging
logging.basicConfig(
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", level=logging.INFO
)
logger = logging.getLogger(__name__)
2.3 Definere våre håndterere
Håndterere er funksjoner som behandler innkommende oppdateringer.
start-kommando-håndterer:
Denne funksjonen vil bli kalt når en bruker sender /start-kommandoen.
async def start(update: Update, context):
"""Sender en velkomstmelding når kommandoen /start utstedes."""
user = update.effective_user
await update.message.reply_html(
f"Hei {user.mention_html()}! Jeg er en ekko-bot. Send meg hva som helst!",
# reply_markup=ForceReply(selective=True), # Valgfritt: tving svar på denne meldingen
)
echo-meldingshåndterer:
Denne funksjonen vil ekko tilbake enhver tekstmelding den mottar.
async def echo(update: Update, context):
"""Ekkoer brukerens melding."""
await update.message.reply_text(update.message.text)
help_command-håndterer:
En enkel hjelpekommando.
async def help_command(update: Update, context):
"""Sender en hjelpemelding."""
await update.message.reply_text("Send meg en melding, så vil jeg ekko den tilbake!")
2.4 main-funksjonen: Samle alt
main-funksjonen er der vi initialiserer boten vår, registrerer håndterere og starter polling for oppdateringer.
def main() -> None:
"""Starter boten."""
# Hent API-tokenet fra miljøvariabler (BEST PRAKSIS!)
# Alternativt kan du hardkode det her for rask testing: TOKEN = "DIN_TELEGRAM_BOT_TOKEN"
TOKEN = os.environ.get("TELEGRAM_BOT_TOKEN")
if not TOKEN:
raise ValueError("TELEGRAM_BOT_TOKEN miljøvariabel er ikke satt.")
# Opprett applikasjonen og gi den botens token.
application = Application.builder().token(TOKEN).build()
# Registrer håndterere
application.add_handler(CommandHandler("start", start))
application.add_handler(CommandHandler("help", help_command))
application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo))
# Kjør boten til brukeren trykker Ctrl-C
application.run_polling(allowed_updates=Update.ALL_TYPES)
if __name__ == "__main__":
main()
2.5 Kjøre boten din lokalt
-
Sett din API-token som en miljøvariabel:
- Linux/macOS:
export TELEGRAM_BOT_TOKEN="DIN_API_TOKEN_HER" - Windows (Kommandoprompt):
set TELEGRAM_BOT_TOKEN="DIN_API_TOKEN_HER" - Windows (PowerShell):
$env:TELEGRAM_BOT_TOKEN="DIN_API_TOKEN_HER"Alternativt, for rask lokal testing, kan du erstatteos.environ.get("TELEGRAM_BOT_TOKEN")med din faktiske token-streng direkte i koden (f.eks.TOKEN = "123456:ABCDEF..."), men dette anbefales ikke for produksjon.
- Linux/macOS:
-
Kjør Python-skriptet ditt: Naviger til katalogen der du lagret
min_telegram_bot.pyi terminalen din og kjør:python min_telegram_bot.py -
Samhandle med boten din: Åpne Telegram, søk etter botens brukernavn (f.eks.
@min_fantastiske_bot), og start en chat. Prøv å sende/start,/help, eller en hvilken som helst tekstmelding. Boten din skal svare!
Gratulerer! Du har nettopp opprettet og kjørt din første Telegram bot Python-applikasjon.

3. Legge til mer avanserte funksjoner
En ekko-bot er kul, men la oss gjøre den mer nyttig. Her er ideer for å utvide din Telegram-bot.
3.1 Håndtere forskjellige meldingstyper
I tillegg til ren tekst støtter Telegram bilder, videoer, dokumenter og mye mer. Du kan bruke filters til å spesifikt håndtere disse.
Eksempel: Svare på bilder
async def handle_photo(update: Update, context):
"""Svarer på et bilde med en bekreftelsesmelding."""
# Du kan få tilgang til bildedetaljer via update.message.photo
# Listen inneholder forskjellige størrelser av samme bilde; den siste er vanligvis den største.
photo_file_id = update.message.photo[-1].file_id
await update.message.reply_text("Fint bilde! Jeg mottok det.")
# Legg til denne håndtereren i din main-funksjon
# application.add_handler(MessageHandler(filters.PHOTO, handle_photo))
3.2 Bruke inline-tastaturer og svar-tastaturer
Tastaturer gir strukturerte interaksjonsmuligheter for brukere.
- Svar-tastaturer (Reply Keyboards): Vises over meldingsinndatafeltet, og erstatter effektivt standardtastaturet. Flott for forhåndsdefinerte valg.
- Inline-tastaturer (Inline Keyboards): Festes direkte til en melding, med knapper som kan utløse tilbakekallinger eller åpne URL-er. Ideelt for interaktive menyer.
Eksempel: Inline-tastatur
La oss endre vår /start-kommando for å tilby knapper.
from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import Application, CommandHandler, MessageHandler, CallbackQueryHandler, filters
# ... (andre importer og logging) ...
async def start(update: Update, context):
"""Sender en velkomstmelding med et inline-tastatur."""
user = update.effective_user
keyboard = [
[InlineKeyboardButton("Besøk TeleClaw", url="https://teleclaw.bot")],
[InlineKeyboardButton("Om Boten", callback_data="about")],
]
reply_markup = InlineKeyboardMarkup(keyboard)
await update.message.reply_html(
f"Hei {user.mention_html()}! Velkommen til min bot. Hva vil du gjøre?",
reply_markup=reply_markup,
)
async def button_callback(update: Update, context):
"""Håndterer tilbakekallingsforespørsler fra inline-tastaturknapper."""
query = update.callback_query
await query.answer() # Svar alltid på tilbakekallingsforespørsler
if query.data == "about":
await query.edit_message_text(text="Dette er en enkel demo-bot laget med Python og `python-telegram-bot`-biblioteket.")
# Legg til flere betingelser for andre callback_data-verdier
Du må oppdatere din main-funksjon for å inkludere CallbackQueryHandler:
# ... inne i main() ...
application.add_handler(CommandHandler("start", start))
application.add_handler(CallbackQueryHandler(button_callback)) # Legg til denne linjen
application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo))
# ...
Dette demonstrerer hvordan man lenker til et eksternt nettsted som TeleClaw og utfører en handling innenfor boten. Du kan utforske mer om forskjellige tastaturalternativer i python-telegram-bot-dokumentasjonen (https://docs.python-telegram-bot.org/en/stable/telegram.keyboardbutton.html).
3.3 Integrere med eksterne API-er
Den virkelige kraften i Telegram bot Python-utvikling kommer fra dens evne til å integrere med tredjepartstjenester. Du kan hente værdata, aktuelle nyheter, oversette tekst, eller til og med integrere med AI-modeller.
Eksempel: Enkelt API-kall (ved hjelp av requests-biblioteket)
Først, installer requests: pip install requests.
import requests
async def get_fact(update: Update, context):
"""Henter et tilfeldig fakta fra et eksternt API."""
try:
response = requests.get("https://uselessfacts.jsph.pl/api/v2/facts/random")
response.raise_for_status() # Utløser en HTTPError for dårlige svar (4xx eller 5xx)
fact_data = response.json()
await update.message.reply_text(f"Visste du? {fact_data['text']}")
except requests.exceptions.RequestException as e:
logger.error(f"Feil ved henting av fakta: {e}")
await update.message.reply_text("Beklager, jeg kunne ikke hente et fakta akkurat nå. Vennligst prøv igjen senere.")
# Legg til denne kommando-håndtereren:
# application.add_handler(CommandHandler("fact", get_fact))
Dette demonstrerer hvordan en bot kan samhandle med eksterne datakilder, akkurat som @claw integreres med ulike tjenester for å tilby sofistikerte funksjoner. For mer avanserte AI-interaksjoner, vurder å bruke plattformer som TeleClaw, som abstraherer bort kompleksiteten ved å integrere med modeller som GPT-4 eller Gemini. Du kan lese mer om å integrere AI-verktøy i vår artikkel om hvordan bygge en Telegram chatbot.

4. Vedvarende data og tilstandshåndtering
For mer komplekse boter trenger du en måte å lagre data mellom interaksjoner. For eksempel, hvis boten din trenger å huske brukerpreferanser eller pågående samtaler.
4.1 Bruke context.user_data og context.chat_data
python-telegram-bot-biblioteket tilbyr context.user_data og context.chat_data-ordbøker (tilgjengelig i dine håndtererfunksjoner) som kan lagre midlertidige data knyttet til en bruker eller en chat. Disse dataene vedvarer så lenge boten kjører.
async def set_favorite_color(update: Update, context):
"""Lar brukere sette sin favorittfarge."""
if context.args:
color = " ".join(context.args).strip()
context.user_data["favorite_color"] = color
await update.message.reply_text(f"Ok, jeg har notert din favorittfarge som {color}.")
else:
await update.message.reply_text("Vennligst fortell meg din favorittfarge, f.eks. /setcolor blå")
async def get_favorite_color(update: Update, context):
"""Forteller brukeren deres favorittfarge."""
color = context.user_data.get("favorite_color")
if color:
await update.message.reply_text(f"Din favorittfarge er {color}.")
else:
await update.message.reply_text("Jeg kjenner ikke din favorittfarge ennå. Bruk /setcolor.")
# Legg til disse håndtererne:
# application.add_handler(CommandHandler("setcolor", set_favorite_color))
# application.add_handler(CommandHandler("getcolor", get_favorite_color))
4.2 Vedvarende data over omstarter
For at data skal vedvare selv når bot-skriptet ditt starter på nytt, trenger du en mer robust løsning, for eksempel:
- Filer (CSV, JSON): Enkelt for små mengder data.
- Databaser (SQLite, PostgreSQL, MongoDB): Anbefales for større, mer komplekse datalagring.
SQLiteer et godt valg for lokal utvikling da det er filbasert og krever ingen separat server. - Tredjeparts lagringsløsninger: Skybaserte databaser som Firestore eller DynamoDB.
python-telegram-bot-biblioteket tilbyr også BasePersistence-klasser som kan brukes med PicklePersistence eller DictPersistence for å lagre user_data, chat_data og bot_data til en fil. Se de offisielle python-telegram-bot-eksemplene for hvordan du bruker persistens (https://docs.python-telegram-bot.org/en/stable/telegram.ext.basepersistence.html).
5. Vurderinger for utrulling
Å kjøre boten din på din lokale maskin er greit for utvikling, men for at den skal være tilgjengelig 24/7, må du rulle den ut til en server.
5.1 Polling vs. Webhooks
Det er to primære måter en Telegram-bot mottar oppdateringer på:
- Lang polling: Boten din spør gjentatte ganger Telegram-servere om nye oppdateringer. Dette er det vi brukte med
application.run_polling(). Enkelt å sette opp, men kan være ressurskrevende for svært aktive boter. - Webhooks: Du forteller Telegram URL-en til serveren din. Når en oppdatering skjer, sender Telegram en HTTP POST-forespørsel til den URL-en. Mer effektivt for produksjon, men krever en offentlig tilgjengelig server og håndtering av HTTPS.
For enkle boter og innledende utvikling er lang polling tilstrekkelig. For produksjon foretrekkes webhooks generelt. python-telegram-bot-biblioteket støtter begge deler.
5.2 Utrullingsplattformer
Flere plattformer er egnet for utrulling av Python-boter:
- Heroku: Flott for små til mellomstore prosjekter, med en gratisversjon. Enkel å rulle ut med
git. - Render: Ligner på Heroku, men ofte med mer generøse gratisversjoner og moderne funksjoner.
- AWS (EC2, Lambda), Google Cloud (Compute Engine, Cloud Functions), Azure (App Service, Functions): Tilbyr kraftige, skalerbare løsninger, men har en brattere læringskurve.
- Virtuelle private servere (VPS): Tjenester som DigitalOcean, Linode, Vultr gir deg mer kontroll, men du er ansvarlig for serveradministrasjon.
Når du ruller ut, husk å:
- Hold din API-token sikker: Bruk miljøvariabler.
- Installer avhengigheter: Opprett en
requirements.txt-fil (pip freeze > requirements.txt) og sørg for at verten din installerer dem. - Konfigurer prosessadministratorer: Verktøy som
systemdellerpm2kan holde boten din i gang selv om den krasjer.
For kommersielle applikasjoner eller svært skalerbare AI-drevne boter, tilbyr plattformer som TeleClaw et robust, administrert miljø. De håndterer infrastrukturen, sikkerheten og skaleringen, slik at du kan fokusere på botens logikk og brukeropplevelse. Sjekk ut vår detaljerte guide om Telegram-bot for bedrifter for å se hva TeleClaw tilbyr.
Konklusjon
Du har nå lært kjernekonseptene for å bygge en Telegram bot Python-applikasjon. Fra den første oppsettet med BotFather og miljøkonfigurasjon til å skrive håndterere for kommandoer og meldinger, håndtere forskjellige datatyper og vurdere utrullingsstrategier, har du et solid grunnlag. python-telegram-bot-biblioteket gjør interaksjon med Telegram API overraskende enkelt, og åpner opp en verden av muligheter for automatisering og interaksjon.
Etter hvert som du blir mer komfortabel, kan du utforske avanserte emner som:
- Samtalehåndtering med
ConversationHandler. - Feilhåndtering og robust logging.
- Integrering med databaser for kompleks datalagring.
- Bruke mer avanserte
filters. - Implementere inline-modus for globale søkefunksjoner.
Husk at skjønnheten i Telegrams åpenhet og Pythons allsidighet er at du kan bygge nesten hva som helst. Hvis du ønsker å heve boten din med banebrytende AI, naturlig språkforståelse eller sømløse integrasjoner uten den tunge kodebyrden, er plattformer som TeleClaw designet for å styrke deg.
Klar til å bygge, forbedre eller administrere dine Telegram-boter med intelligent automatisering?
Utforsk TeleClaw i dag og gi din Telegram-bot et superløft! eller prøv boten vår direkte på Telegram: @claw
FAQ
Ofte stilte spørsmål
Hva er de grunnleggende stegene for å lage en Telegram-bot med Python?
Trenger jeg kodeerfaring for å følge denne Python-guiden for Telegram-boter?
Hvordan kan TeleClaw hjelpe med mitt Python-prosjekt for Telegram-boter?
Fortsett å lese
De beste AI-agentene for bedrifter i 2026: En kategoriguide
Den enkleste måten å sammenligne AI-agenter for bedrifter i 2026: seks reelle kategorier, ærlige anbefalinger, og hvor en Telegram-basert agent som TeleClaw faktisk passer inn.
TeleClaw Skyagenter: Kjør en kodeagent fra Telegram
TeleClaw er oppført i OpenRouters kategori for skyagenter. Lær hva en skyagent gjør, hvordan 2026 endret feltet, og hvordan du kjører en fra Telegram.