Telegram botu yapımı
Telegram’da goygoy uğruna Çüktrüy adlı botu yapmamın uğruna bu tarz bir eğitimin telegram kullanıcıları için iyi olabileceğini planlayarak böyle bir konu yazma gereği duydum. Aslında sanıldığı kadarı ile zor değil hatta çok kolay bile diyebiliriz bu yazılıma. Sistem tamamı ile apiler üzerinden çalıştığı için aslında hiç birşey yapmıyoruz bile sayılabilir toplam 10,15 satırla basic bir bot yapabiliriz.
Bu yazı Developerlara hükmen hazırlanmış bi konudur. Sunucu yada Heroku gibi platformları kullanarak yapabilirsiniz. Google de How to use heroku ? gibi soruları araştırarak herokunun eğitimini görebilirsiniz.
Gereklilikler;
- Python 3.4+ Version
- PIP 3 Version
PIP Kurulumu
- CENTOS 7 İÇİN :
- EPEL kütüphanesini yüklüyoruz
sudo yum install epel-release
- PIP yükleme
sudo yum install python-pip
- Ubuntu için :
- Güncelleme
sudo apt update
- PİP Yükleme
sudo apt install python3-pip
API Kurulumu (API KUTUPHANESİ)
Pip üzerinden telegram apisini sunucumuza kuruyoruz.
pip install pyTelegramBotAPI
Bot Oluşturalım
Telegram’dan @botfather a mesaj atarak botumuzu oluşturalım.
Kullanıcı adı belirtirken boşluksuz yazmanız gerekiyor bot oluştuktan sonra size http api verir onu kopyalayın.
BOT KODLAMASI
echo_bot.py adında bir dosya oluşturuyorsunuz ve kodlama işlemine başlıyoruz. import telebot’un üstünde boşluk olmayacak şekilde kodları yapıştırın.
import telebot cuktruy = telebot.TeleBot("KOPYALADIĞINIZ API KODUNU BURAYA YAPIŞTIRIN")
Üstte ki kodda telebot’u tanımladık ve botumuzun API bağlantısını yaptık.
Alttaki kodu oluşturduğumuz python dosyasının en altına ekliyoruz.
@cuktruy.message_handler(commands=['start', 'help']) def send_welcome(message): cuktruy.reply_to(message, "Size nasıl yardımcı olabilirim ? ")
Üstteki kodun anlamı /start veya /help yazdığımızda sizin mesajınızı alıntılayıp “Size nasıl yardımcı olabilirim ?” yazar.
Peki siz komut değil de kelime algılamasını istiyorsanız ne yapacaksınız API’nin regex fonksiyonunu kullanıcaz.
Alttaki kodu açtığımız python dosyasının en altına eklerseniz “warezm nedir ” yazdığınızda size otomatik olarak size belirlediğimiz mesajı yanıtlar.
@cuktruy.message_handler(func=lambda m: True,regexp="warezm nedir ") def kimsin(message): cuktruy.reply_to(message, 'Bir eğitim ağırlıklı warez platformudur.')
Bot kodlaması basic olarak burada bitiyor buradaki kodları kullanarak otomatik yanıt alabileceğiniz basit bir yazılım yapabilirsiniz.
Bundan sonra ki yapmak istedikleriniz sizin hayal gücünüze bağlı biz size hazır bir dökümanı Türkçeleştirerek nasıl basit bir bot yapabileceğinizi anlattık. Takıldığınız veya yapamadığınız kısımlarda Forum üzerinden destek alabilir ve konudan yardım isteyebilirsiniz.
echo_bot.py (BÜTÜN KODLAR)
import telebot cuktruy = telebot.TeleBot("KOPYALADIĞINIZ API KODUNU BURAYA YAPIŞTIRIN") @cuktruy.message_handler(commands=['start', 'help']) def send_welcome(message): cuktruy.reply_to(message, "Size nasıl yardımcı olabilirim ? ") @cuktruy.message_handler(func=lambda m: True,regexp="warezm nedir ") def kimsin(message): cuktruy.reply_to(message, 'Bir eğitim ağırlıklı warez platformudur.')
Yapamadığınız veya takıldığınız bir konu olursa forum üzerinden belirtebilir ve destek alabilirsiniz.
DÖKÜMAN
Peki inline keyboard dediğimiz olayı nasıl yaparız diye soruyorsanız yapmanız gerekenler;
- Telegramdan @botfather a /mybots yazın
- Bot Settings e tıklayın
- Inlıne Mode a tıklayıp Turn On a basın.
Inline Kullanım : Herhangi bir şey yazdığınızda inline panel açılır Örnek Kod
@cuktruy.inline_handler(lambda query: query.query == 'text') def query_text(inline_query): # Query message is text
Video Gönderme:
# sendVideo video = open('/tmp/video.mp4', 'rb') // Video yu okutun cuktruy.send_video(chat_id, video) cuktruy.send_video(chat_id, "FILEID")
Sticker Gönderme :
# sendSticker sti = open('/tmp/sti.webp', 'rb') // Stickerı okutun cuktruy.send_sticker(chat_id, sti) cuktruy.send_sticker(chat_id, "FILEID")
Konum Gönderme :
cuktruy.send_location(chat_id, lat, lon)
SES Gönderme :
audio = open('/tmp/audio.mp3', 'rb') cuktruy.send_audio(chat_id, audio) cuktruy.send_audio(chat_id, "FILEID")
Mesaj kategorisi algılama
if message.chat.type == "private": # private chat message if message.chat.type == "group": # group chat message if message.chat.type == "supergroup": # supergroup chat message if message.chat.type == "channel": # channel message
Gelen istekleri devamlı dinle
def listener(messages): for m in messages: str(m) cuktruy.set_update_listener(listener) cuktruy.polling()