phyton telegram markdown prasemode

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Jyll
User
Beiträge: 26
Registriert: Montag 26. Juli 2021, 14:18

Guten Morgen, liebe Gemeinde. Mal wieder stundenlang gesucht und keine Lösung gefunden. Ich habe einen Bot erstellt für TG. Der funktioniert soweit sehr gut (1. Code). Nun wollte ich einen Begrüssungsbot danach erstellen. Hab mir im Netz einen code rausgesucht (https://github.com/brain4tech/telegram- ... message.py). Was ich auch mache, ich bekomme bei: def send_message bzw. send_message Markdown nicht hin. Das Grundgerüst vom 2. Code ist anbei. Danke für die Hilfe.
LG Jyll

Code: Alles auswählen

# 1. Code
tg_text = "*mein Textx* \n mein Texty"

def tel_send(message):
    telegram_send.send(messages=[message], parse_mode=telegram.ParseMode.MARKDOWN, conf="XY")

tel_send(tg_text)

Code: Alles auswählen

# 2. Code
tg_text= "*Textx*"

def send_message(chatId, message): 
    requests.post(sendURL + "?chat_id=" + str(chatId) + "&text=" + message)

while True:
    newmessage = update(requestURL)

    if newmessage != False:
        chattype = newmessage['message']['chat']['type']
        if chattype == "supergroup":
            if 'new_chat_participant' in newmessage['message']:
                membername = newmessage['message']['new_chat_participant']['first_name']
                chatid = newmessage['message']['chat']['id']
                send_message(chatid, "Herzlich willkommen, " + membername + " !"+ "\n" + tg_text )


rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@Jyll,

was meinst du mit
ich bekomme bei: def send_message bzw. send_message Markdown nicht hin.
?

Abgesehen davon, sollte man für einen robusten Stringzusammenbau so vorgehen:

Code: Alles auswählen

send_message(chatid, f"Herzlich willkommen, {membername}!\n{tg_text}" )
https://docs.python.org/3/reference/lex ... g-literals
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

Man formatiert keine URL-Parameter zusammen, das gibt Probleme mit Sonderzeichen. Konstanten schreibt man KOMPLETT_GROSS, Variablennamen schreibt man komplett_klein:

Code: Alles auswählen

def send_message(chat_id, message):
    requests.post(SEND_URL, params={"chat_id": char_id, "text": message})
`global` benutzt man nicht, und so, wie das in dem verlinkten Code zu sehen ist, ist das auch zum Großteil unnötig.
Jyll
User
Beiträge: 26
Registriert: Montag 26. Juli 2021, 14:18

@rogerb @sirius3
Danke für Eure Hilfe zunächst. Hab den Code angepasst, so wie Ihr das vorgeschlagen habt (siehe unten). Jetzt schlägt der Bot leider nicht mehr an, wenn ich mich als Mitglied neu anmelde. Was vorher der Fall war. "Global" wollte ich anschließend durcharbeiten. Ich bin noch sehr neu (Python) und brauche Stunden, um da überhaupt durchzusteigen.
Danke für Eure Hilfe
Jyll

Code: Alles auswählen

import requests
from time import sleep

global OFFSET
OFFSET = 0

botToken = "123"

global requestURL
global sendURL

requestURL = "http://api.telegram.org/bot" + botToken + "/getUpdates"
SEND_URL = "http://api.telegram.org/bot" + botToken + "/sendMessage"

def update(url):
    global OFFSET

    try:
        update_raw = requests.get(url + "?offset=" + str(OFFSET))
        update = update_raw.json()
        result = extract_result(update)

        if result != False:
            OFFSET = result['update_id'] + 1
            return result
        else:
            return False

    except requests.exceptions.ConnectionError:
        pass

def extract_result(dict):
    result_array = dict['result']

    if result_array == []:
        return False
    else:
        result_dic = result_array[0]
        return result_dic

tg_text = "*mein text*"

def send_message(chat_id, message):
    requests.post(SEND_URL, params={"?chat_id=": chat_id, "&text=": message})

while True:
    newmessage = update(requestURL)

    if newmessage != False:
        chattype = newmessage['message']['chat']['type']
        if chattype == "supergroup":
            if 'new_chat_participant' in newmessage['message']:
                membername = newmessage['message']['new_chat_participant']['first_name']
                chat_id = str(newmessage['message']['chat']['id'])
                send_message(chat_id, f"Herzlich willkommen, {membername}{tg_text}")
    sleep(1)
Antworten