Sadece basit bir teşekkür etmeniz yeterlidir kod içerisinde API ekli şekildedir sadece telegram bot tokeninizi ekleyip kullanabilirsiniz 🙂


Bu bot, Telegram üzerinden döviz ve kriptopara birimi dönüşümü yapmayı sağlayan bir araçtır.

Özellikler:
1. Döviz Dönüşümü: Belirli bir miktarı bir para biriminden diğerine çevirir.
Örnek: /con 10 USD TRY

Kaynak Kodlar
Alıntı
import requests
from telegram import Update
from telegram.ext import Updater, CommandHandler, CallbackContext

# API URL'si
API_BASE_URL = 'https://api.coinbase.com/v2/exchange-rates?currency='

# Bot başlangıç mesajı
def start(update: Update, context: CallbackContext) -> None:
welcome_message = (
"*Merhaba!* 👋nn"
"Para hesaplama botuna hoş geldin! 💰nn"
"Herhangi bir para birimi arasında dönüşüm yapabilirsin.nn"
"*Örnek `/con 10 USD TRY`n"
"Bu komut, 10 USD'yi TRY'ye dönüştürür.nn"
"Yapabileceğiniz diğer komutlar:n"
"- `/con` : Para dönüşümü yapn"
"- `/help` : Yardım aln"
"Hadi başlayalım! 🚀"
)
update.message.reply_text(welcome_message, parse_mode='Markdown')

# Yardım komutu
def help(update: Update, context: CallbackContext) -> None:
help_message = (
"*Yardım Menüsü 🆘nn"
"Bu bot ile aşağıdaki işlemleri yapabilirsiniz:nn"
"*1. Para Dönüşümü 💱n"
" `/con <miktar> <kaynak_para_birimi> <hedef_para_birimi>`n"
" Örnek: `/con 10 USD TRY` - 10 USD'yi TRY'ye dönüştürür.nn"
"*2. Destek 🤖n"
" Yardım almak için `/help` komutunu kullanabilirsiniz.nn"
"Başka bir şey sormak isterseniz, sormaktan çekinmeyin!"
)
update.message.reply_text(help_message, parse_mode='Markdown')

# API'den döviz kuru oranlarını al
def get_exchange_rates(base_currency: str) -> dict:
try:
# API URL'ini oluştur
response = requests.get(f'{API_BASE_URL}{base_currency.upper( )}')
response.raise_for_status() # Hata varsa istisna fırlat
rates = response.json()['data']['rates']
return rates
except requests.exceptions.RequestException as e:
print(f"API hatası: {e}")
return None

# Döviz dönüşüm fonksiyonu
def convert_currency(amount: float, source_currency: str, target_currency: str, rates: dict) -> float:
if target_currency in rates:
rate = float(rates[target_currency])
return amount * rate
return None

# Ters dönüşüm fonksiyonu (örneğin, TRX oranlarını sorgulamak)
def reverse_conversion(amount: float, source_currency: str, target_currency: str) -> float:
# Hedef para biriminin oranlarını sorgula
target_rates = get_exchange_rates(target_currency)
if target_rates and source_currency in target_rates:
reverse_rate = float(target_rates[source_currency])
return amount / reverse_rate
return None

# /con komutunun işlenmesi
def con(update: Update, context: CallbackContext):
try:
# Kullanıcıdan alınan verileri parse et
if len(context.args) < 3 or len(context.args) > 4:
update.message.reply_text(
"*⚠️ Hatalı kullanım!*nn"
"Doğru formatta kullanmak için:n"
"`/con <miktar> <kaynak_para_birimi> <hedef_para_birimi> [komisyon_oranı]`nn"
"*Örnekn"
"`/con 10 USD TRY` - 10 USD'yi TRY'ye dönüştürür.n"
"`/con 10 USD TRY 30` - 30% komisyonla dönüşüm yapar.",
parse_mode='Markdown'
)
return

amount = float(context.args[0])
source_currency = context.args[1].upper()
target_currency = context.args[2].upper()

# Komisyon oranı varsa
commission_rate = 0
if len(context.args) == 4:
commission_rate = float(context.args[3])

# Kaynak para biriminden oranları al
rates = get_exchange_rates(source_currency)

if not rates:
update.message.reply_text(f"❌ Hata! Geçerli bir kısaltma kullanmadınız. Lütfen doğru bir kısaltma kullanınız.nn"
"✅ Örnekler:n"
"- TL yerine TRYn"
"- Dolar yerine USDn"
"- Euro yerine EUR")
return

# Döviz dönüşümünü gerçekleştir
converted_value = convert_currency(amount, source_currency, target_currency, rates)

if converted_value is None:
# Hedef para birimi bulunamadı, ters dönüşümü dene
reverse_value = reverse_conversion(amount, source_currency, target_currency)
if reverse_value is None:
update.message.reply_text(f"❌ Hata! Geçerli bir kısaltma kullanmadınız. Lütfen doğru bir kısaltma kullanınız.nn"
"✅ Örnekler:n"
"- TL yerine TRYn"
"- Dolar yerine USDn"
"- Euro yerine EUR")
else:
update.message.reply_text(
f"✅ *Ters Dönüşüm Yapıldı!* 🔄nn"
f"{amount} {source_currency} ≈ {reverse_value:.6f} {target_currency}",
parse_mode='Markdown'
)
else:
# Komisyonlu hesaplama
if commission_rate > 0:
commission_amount = amount * (commission_rate / 100)
net_amount = amount - commission_amount
converted_value_after_commission = convert_currency(net_amount, source_currency, target_currency, rates)

update.message.reply_text(
f"📊 *Döviz ve Kripto Hesaplama* 📊nn"
f"Güncel Kur: {amount} {source_currency} = {converted_value:.2f} {target_currency}n"
f"Tutar: {amount} {source_currency} ({converted_value:.2f} {target_currency})n"
f"Komisyon Oranı: %{commission_rate}n"
f"Komisyon: {commission_amount:.2f} {source_currency} ({converted_value - converted_value_after_commission:.2f} {target_currency})n"
f"📤 Gönderilecek Miktar: {net_amount:.2f} {source_currency} ({converted_value_after_commission:.2f} {target_currency})",
parse_mode='Markdown'
)
else:
update.message.reply_text(
f"✅ *Dönüşüm Başarıyla Tamamlandı!* 🎉nn"
f"{amount} {source_currency} ≈ {converted_value:.2f} {target_currency}",
parse_mode='Markdown'
)

except (IndexError, ValueError) as e:
update.message.reply_text(
"*⚠️ Hatalı kullanım!*nn"
"Lütfen doğru formatta kullanın: `/con <miktar> <kaynak_para_birimi> <hedef_para_birimi>`",
parse_mode='Markdown'
)
except Exception as e:
update.message.reply_text(f"❌ Bir hata oluştu: {e}")

# Botu başlat
def main():
updater = Updater("TOKEN BURAYA")

dispatcher = updater.dispatcher
dispatcher.add_handler(CommandHandler("start", start))
dispatcher.add_handler(CommandHandler("help", help))
dispatcher.add_handler(CommandHandler("con", con))

updater.start_polling()
updater.idle()

if __name__ == '__main__':
main()