Python ile telegram'a bot yazmak
Halihazırda herkes whatsapp'tan telegrama geçerken, telegrama bot geliştirme konusunu ele alalım.
Dilerseniz bizim botumuzu kullanabilirsiniz, gruplariniza ekleyebilirsiniz: http://t.me/paylasiobot
BIzim botumuza her gun yeni komutlar eklenmekte simdilik bunlar var:
/help
/kacpara BTC TRY
/kacpara
/keps
Reklamlarin ardindan kendi botumuza ge.iyoruz.
Bot yaratmak
- Telegramdan botfather'a mesaj atiyoruz. Bu linki kullanarak ulasabilirsiniz: https://t.me/botfather
- /newbot yazdigimiz zaman botfather bize yonergeler verecek. Isim secimi vs gibi. Kullanici adlari alinmis olabiliyor o yuzden bir iki varyasyon deneyin.
- Daha sonra bot yaratimi tamamlaninca botfather size bir token verecek. Bunu kaybetmeden bir yere yazin.
Bot ile Tek yönlü mesaj göndermek
Bu sadece deneme amacli, asil kod asagida ama bash ile de curl kullanarak soyle bir POST request atip mesaj yollayabilirsiniz.
curl -s -X POST https://api.telegram.org/BOT_TOKEN/sendMessage -d chat_id=CHAT_ID -d text="Merhaba bot ile ilk mesajim"
curl
yuklu degilse (muhtemelen windows'tasinizdir)
- Windows'ta
choco install curl
- Linux'ta
sudo apt install curl
- Mac'te
brew install curl
Bot ile çift yönlü mesaj göndermek ve kodu
Burda kodu kisa tutmak icin tek bir kutuphane kullanacagiz o da python-telegram-bot
.
Bunu yuklemek icin pip kullanacagiz. Eger pip ne bilmiyorsaniz, python paketleriyle araniz yoksa once surayi okumanizi tavsiye ederim: Python virtualenv kullanimi: https://paylas.io/p/5e0dcb0e5f14746202430cde
pip install python-telegram-bot
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Paylas.io katkilariyla python botu.
"""
import random
import logging
from telegram import Update
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext
# Biraz logging ekleyelim.
logging.basicConfig(
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.DEBUG
)
logger = logging.getLogger(__name__)
def command_start(update: Update, context: CallbackContext) -> None:
"""/start geldiginde Naber cevabi yazan komut."""
update.message.reply_text('Naber')
def command_ozlu_soz(update: Update, context: CallbackContext) -> None:
"""/ozlusoz geldiginde random bir ozlu soz secip cevap yazan komut."""
update.message.reply_text(random.choice([
'Kaça almışsan ucuza almışsın',
'Ask arkadasliga donusebilir ama arkadaslik aska asla (ters mi?)',
]))
def command_help(update: Update, context: CallbackContext) -> None:
"""/help yazildiginda desteklenen komutlari listeleyen komut."""
update.message.reply_text('Komutlar:\n/start\n/help\n/ozlusoz')
def echo(update: Update, context: CallbackContext) -> None:
"""Gelen mesaji aynen geri yaz."""
update.message.reply_text(update.message.text)
def main():
# Updater mesajlari dinleyen modul.
# Buraya botfather'dan aldigimiz tokenimizi tırnak işareti icinde yaziyoruz.
# Cunku o bir string.
updater = Updater(TOKENINI_YAZ, use_context=True)
# Get the dispatcher to register handlers
dispatcher = updater.dispatcher
# Komutlarin handlerinlarini ekle
dispatcher.add_handler(CommandHandler("start", command_start))
dispatcher.add_handler(CommandHandler("help", command_help))
dispatcher.add_handler(CommandHandler("ozlusoz", command_ozlu_soz))
# Bilinmeyen komutlar icin ayni mesaji geri yaz.
dispatcher.add_handler(MessageHandler(Filters.text & ~Filters.command, echo))
# Mesaj dinleme islemini baslat.
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
Yukaridaki dosyayi bot.py olarak kaydediyoruz. Sonra botu calistirmak icin asagidaki komutu yaziyoruz. Sonsuz dongude bir server baslayacak ve surekli gelen mesajlari dinleyecek.
python bot.py
Deneme amacli kendi botunuza kendiniz mesaj atip komutlari calistirabilirsiniz.