Halo semuanya! Pasti kalian pernah melihat di berbagai bot link referral seperti https://t.me/ <username_bot>? Start = <number>. Biasanya, ID Telegram perujuk ditunjukkan sebagai angka. Pada artikel ini, saya akan menjelaskan cara menangani tautan semacam itu di bot saya.
Untuk mengembangkan bot, saya menggunakan pustaka Python pytelegrambotapi.
Saya akan menghilangkan proses pembuatan bot melalui @BotFather , saya akan melanjutkan langsung ke kode. Ada file config.py
dengan variabel TOKEN, yang menyimpan token bot. bot.py
Kami akan "mengubah" file . Mari kita tulis handler untuk perintah / start dan tampilkan semua yang disimpan di objek pesan.
import telebot
import config
bot = telebot.TeleBot(config.TOKEN)
@bot.message_handler(commands=["start"])
def start_command_handler(msg):
print(msg)
if __name__ == '__main__':
bot.polling(none_stop=True)
'text': '/start'.
https://t.me/<_>?start=test 10- print(msg.text)
/start test
. , msg.text
, .
. , /start , /start
. ( /start test
). ID .
@bot.message_handler(commands=["start"])
def start_command_handler(msg):
user_id = msg.from_user.id
referrer = None
if " " in msg.text:
referrer_candidate = msg.text.split()[1]
#
https://t.me/<_>?start=test test2, test2 msg.text, , , test2 . msg.text
. , . (msg.text.split()
), ( , , ?).
, . , , . - "" , ID - . .
@bot.message_handler(commands=["start"])
def start_command_handler(msg):
user_id = msg.from_user.id
referrer = None
# -
if " " in msg.text:
referrer_candidate = msg.text.split()[1]
#
try:
referrer_candidate = int(referrer_candidate)
#
except ValueError:
pass
, try... except
int()
. referer
, int()
ValueError
referer . : int()
"-101" -101. referer . , .
TG ID. , . . ID , user_id = msg.from_user.id
@bot.message_handler(commands=["start"])
def start_command_handler(msg):
user_id = msg.from_user.id
referrer = None
# -
if " " in msg.text:
referrer_candidate = msg.text.split()[1]
#
try:
referrer_candidate = int(referrer_candidate)
# TG ID TG ID
if user_id != referrer_candidate:
#
pass
except ValueError:
pass
, get_all_users(), . , , .
@bot.message_handler(commands=["start"])
def start_command_handler(msg):
user_id = msg.from_user.id
referrer = None
# -
if " " in msg.text:
referrer_candidate = msg.text.split()[1]
#
try:
referrer_candidate = int(referrer_candidate)
# TG ID TG ID
# ,
if user_id != referrer_candidate and referrer_candidate in get_all_users():
referer = referrer_candidate
except ValueError:
pass
Apa yang harus dilakukan jika pengguna sudah memiliki perujuk? Lagi pula, kami tidak akan memberikan bonus untuk rujukan yang dirujuk setiap kali Anda menggunakan tautan rujukan, itu hanya akan merusak kami. Oleh karena itu, perlu untuk menulis cek. Mari kita tulis fungsi has_referrer()
yang akan mengembalikan True jika pengguna memiliki perujuk dan False jika tidak. Adalah logis untuk menulisnya di awal untuk pengoptimalan.
@bot.message_handler(commands=["start"])
def start_command_handler(msg):
user_id = msg.from_user.id
#
if not has_referrer():
referrer = None
# -
if " " in msg.text:
referrer_candidate = msg.text.split()[1]
#
try:
referrer_candidate = int(referrer_candidate)
# TG ID TG ID
# ,
if user_id != referrer_candidate and referrer_candidate in get_all_users():
referer = referrer_candidate
except ValueError:
pass
Semoga artikel ini bermanfaat bagi Anda!