Python Telebot – Abfrage der Telefonnummer des Benutzers

Hallo zusammen! Eigentlich ist die Essenz des Problems im Titel des Beitrags angegeben: wie man das Telefon eines Benutzers mit Python und Telebot-Bibliothek zu bekommen. Let’s figure it out 😉

Unten finden Sie ein Beispiel für ein funktionierendes Jahr, das Ihnen hoffentlich helfen wird 🙂 Wenn du Fragen hast, kannst du sie gerne an email oder Telegram stellen.

import telebot #Connected the Telebot library - to work with Telegram
from telebot import types #Verbundene Add-ons
import config #Angeschlossen die Bibliothek Config, mit deren Hilfe wir das Token nicht im Code des Programms ;) sondern in der Datei config.py speichern können. Wichtig: diese Datei muss sich im gleichen Verzeichnis wie der Code befinden!
bot = telebot.TeleBot(config.token) #Verbinden des Tokens
@bot.message_handler(commands=['number']) #Deklariert eine Verzweigung, um mit dem number Befehl zu arbeiten
def phone(message):
keyboard = types.ReplyKeyboardMarkup(row_width=1, resize_keyboard=True) #Tastatur anhängen
button_phone = types.KeyboardButton(text="Telefon senden", request_contact=True) #Bestimmen Sie den Namen der Schaltfläche, die dem Benutzer angezeigt wird
keyboard.add(button_phone) #Hinzufügen dieser Schaltfläche
bot.send_message(message.chat.id, 'Telefonnummer', reply_markup=keyboard) #Duplizieren Sie mit einer Nachricht, dass der Benutzer nun seine Telefonnummer an den Bot sendet (nur für den Fall, aber es ist nicht notwendig).
@bot.message_handler(content_types=['contact']) #Deklariert den Zweig, in dem wir die Logik für den Fall schreiben, dass der Benutzer sich entscheidet, die Telefonnummer zu senden :)
def contact(nachricht):
if message.contact is not None: #Wenn das gesendete Kontakt Objekt nicht null ist
print(message.contact) #Kontaktdaten in unserem Panel anzeigen. Und im Allgemeinen kann man sie zum Beispiel speichern oder etwas anderes tun.

Speziell für Sie – ein Video mit einer visuelleren Anleitung:

Wie Sie sehen können – alles ist sehr, sehr einfach 🙂
Vielen Dank für Ihre Aufmerksamkeit!

P.S. Auf meinem Youtube-Kanal stellte einer meiner Abonnenten eine interessante Frage: Wie kann man die Tastatur ausblenden, nachdem man eine Telefonnummer gesendet hat? Ich wusste keine Antwort auf die Frage 🙁 Aber einen Tag später gab mir der Abonnent eine Lösung, die ich hier teile:

Tastatur = types.ReplyKeyboardRemove()
bot.send_message(message.chat.id, msg, reply_markup=keyboard)

P.P.S. Vor nicht allzu langer Zeit tauchte eine Frage auf – wie kann man z.B. die Telefonnummer, die man von einem Benutzer erhalten hat, in verdaulicher Form irgendwo in einer Gruppe versenden? Das ist ganz einfach:
1. Fügen Sie einen Bot hinzu, der die erhaltenen Informationen an die gewünschte Gruppe mit Administrator-Rechten senden soll
2. Nehmen Sie im Code des Bots die folgenden Änderungen an der Funktion def contact(message) vor:

@bot.message_handler(content_types=['contact'])
def contact(message):
Wenn message.contact nicht None ist:
print(nachricht.kontakt)
print(type(nachricht.kontakt))
print('Name: ' + str(message.contact.first_name))
text = 'Benutzer: ' + message.contact.first_name + ': Telefon: ' + message.contact.phone_number
bot.send_message(id_channel, text)

Eigentlich können Sie alles ausgeben, was Sie wollen – verwenden Sie einfach den Namen des erforderlichen Feldes im Schema:

'phone_number': '***', 'first_name': '***', 'last_name': '***', 'user_id': '***', 'vcard': '***'

wobei die Sternchen die vollständigen Kontaktangaben des Nutzers verbergen.

Wie kann ich die Entfernung zwischen zwei Punkten auf einer Karte mithilfe von GPS-Koordinaten bestimmen?

Es ist dringend notwendig, etwas mit PHP zu machen, mit dessen Hilfe es möglich sein wird, die Entfernung zwischen zwei Punkten auf der Karte durch GPS-Koordinaten schnell zu bestimmen. Für diejenigen, die ein wenig aus der Schleife sind – lassen Sie mich klarstellen, dass die Hauptschwierigkeit einer solchen Aufgabe ist, dass wir den Abstand zwischen zwei Punkten auf einer Kugel, nicht auf einer Ebene zu bestimmen. Deshalb brauchen wir (es gibt Analoga, aber ich bevorzuge) die Haversinus-Methode.

Die Haversine-Methode basiert auf trigonometrischen Funktionen und Gesetzen der sphärischen Geometrie und ermöglicht die Berechnung der Entfernung zwischen zwei Punkten auf der Oberfläche einer Kugel anhand ihrer geografischen Koordinaten (Breiten- und Längengrad). Diese Methode berücksichtigt die Erdkrümmung und liefert vor allem bei großen Entfernungen genauere Ergebnisse als eine einfache geradlinige Entfernungsberechnung auf einer Ebene.

Ich habe bereits ein Schema zur Lösung einer ähnlichen Frage mit Python beschrieben (die Lösung finden Sie hier) – aber ich sage es noch einmal – ich musste eine ähnliche Aufgabe lösen, jetzt aber in PHP. Es hat etwa 30 Minuten gedauert, mit einer Pause für Tee und Musik (ich habe das hier als Musik verwendet):

… In der visuellen Gestaltung ist alles einfach – ein Formular mit zwei Feldern, in die man die Koordinaten des ersten und zweiten Punktes eingibt, und – jeweils eine Schaltfläche, bei deren Anklicken die ganze Magie passiert :). Es war zu faul, die ganze Magie in einer zweiten Datei auszugeben, also wird alles in einer Datei gemacht, deren Code unten steht. Verwenden Sie ihn, wenn Sie ihn brauchen:




/* Error on d-style.css : Something went wrong: Es wurde keine gültige URL übermittelt. */




"> ">" > " />
document.getElementById('textarea').value = 'Abstand zwischen Punkten: " . number_format($distance, 5) . " km';" } else { // Ausgabe einer Fehlermeldung zum Koordinatenformat echo "Falsches Koordinatenformat. Geben Sie für beide Punkte Koordinaten im Format 'Breitengrad, Längengrad' ein." } } ?>

Es gibt eine Reihe von Kommentaren im Code – das wird schon irgendwie Sinn machen.

Der Mechanismus zur Bestimmung der Entfernung zwischen zwei Punkten auf der Karte mit Hilfe von GPS-Koordinaten kann entweder über Link oder – hier – über die Box im Frame gefunden werden 🙂 :

Wie immer – E-Mail, oder Telegram, wenn Sie irgendwelche Fragen haben.

Wie sende ich Daten aus einem HTML-Formular an Telegram?

Hallo zusammen! Heute werden wir verstehen, wie man Daten von html-Formular zu Telegram senden?

Sie wissen, was ein Feedback-Formular ist (ich bin mir sicher). Sie werden überall verwendet – auch dort, wo sie nicht wirklich gebraucht werden. Und Sie wissen auch, was Telegram ist – ein sehr bequemer (heutzutage wahrscheinlich der bequemste) Messenger, und im Allgemeinen – ein Überbau über das Internet. Im Allgemeinen werde ich nicht das Wort verbreiten, sondern Ihnen sagen, wie Sie ein Feedback-Formular erstellen können, dessen Daten an Telegram gesendet werden.
Um dies zu tun, werden wir brauchen:
1. Erstellen Sie einen Bot.
2. Erstellen Sie eine Gruppe, zu der wir unseren frisch erstellten Bot aus Punkt 1 hinzufügen müssen.
3. Erstellen Sie ein Feedback-Formular, das auf unserer Website erscheinen wird. Das Formular wird zum Beispiel so aussehen (es ist nur ein Formular, es wird nichts tun – Sie müssen den Knopf nicht fest drücken 🙂 ):


 

Um ehrlich zu sein, bin ich zu faul, um mich jetzt zu bemühen, also besteht das Formular nur aus einem Feld und einem Button 🙂
So, wir haben das Formular, und nun kümmern wir uns um den Code, der die Daten aus dem html-Formular an Telegram sendet. Der Code sieht so einfach wie möglich aus:

>

Die Logik des Codes selbst ist wie folgt:
1. Wir wissen, dass wir mit Telegram arbeiten können, indem wir über die Adressleiste des Browsers Befehle an seine API senden.
2. Alles, was wir also tun müssen, ist:
– den Token unseres Bots kennen (wir erhalten ihn im Moment der Bot-Erstellung)
– die chat_id kennen (es ist sehr einfach, die chat_id zu erhalten, indem man dem Link folgt:
https://api.telegram.org/botTOKEN>/getUpdates, nur anstelle von TOKEN den Token eingeben, den man bei der Erstellung des Bots erhalten hat 😉
Und ja – wenn du plötzlich dem Link folgst und etwas bekommst wie:
{„ok“:true,“result“:[]}
füge deinen Bot zu deiner Gruppe hinzu, an die die HTML-Formularnachrichten gesendet werden 😉 )
– einen zusammenfassenden String generieren, der Folgendes enthält:
— einen Link zur Telegram API
— Bot-Token
— Befehl für den Bot (in unserem Fall – sendMessage
— chat_id (wo und wie man sie bekommt, habe ich ein paar Zeilen weiter oben geschrieben)
— Textkodierungsmodus
— und, eigentlich, der Text selbst, den wir aus dem html-Formular holen müssen.

Lassen Sie uns all dies tun:
– chat_id – hab’s
– Token – überprüfen
– Link zur Telegram API – da
– Text, den wir vom HTML-Formular erhalten – ist da (wir erhalten ihn hier: $text = ‚Text vom HTML-Formular: ‚.$_POST[‚input_text_box‘];
Bleibt noch, eine Zusammenfassung für den Browser zu generieren:
$url = ‚https://api.telegram.org/bot‘.$token.’/sendMessage?chat_id=‘.$chat_id.’&parse_mode=html&text=‘.$text;

und übergeben Sie diese Zeichenfolge an den Browser:

$handle = curl_init($url);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
$Antwort = curl_exec($handle);
header('Location: https://lavrynenko.com/form_to_telegram.html');

Sie können all dies in der funktionierenden Form unter diesem Link ausprobieren 🙂 Dort sehen Sie ein HTML-Formular, in das Sie Text eingeben und absenden können.

Sie müssen jedoch nicht dem Link folgen… hier ist das Formular in einem Frame 🙂 :

Manchmal beobachte ich, wie Leute etwas in das Formular schreiben, es aber nicht in die Gruppe einfügen, um zu sehen, wie der Text vom Formular dorthin gelangt. Nur zur Erinnerung – hier ist die Gruppe: https://t.me/html_to_telegram – gehen Sie dorthin, und sehen Sie, wie Ihre Texte aus dem Formular dort erscheinen 😉
WICHTIG!
Sie möchten sicherstellen, dass der über das html-Formular gesendete Text bei Telegram ankommt? Kein Problem – Treten Sie der Gruppe bei und beobachten Sie, wie der Bot alles, was Sie im HTML-Formular geschrieben haben, im Telegram-Chat an diese Gruppe ausgibt.

WIE WICHTIG: wenn deine Nachricht plötzlich nicht in der Gruppe ankommt – schreibe mir in Telegram oder per Mail. Ich werde es korrigieren 🙂

Wie immer – wenn ihr Fragen habt, schreibt an email, oder an Telegram.