LINUX.ORG.RU

бот для телеграм

 , , ,


2

2

как передать в переменную то что я отправила боту как текст. То есть когда я отправляю боту например qwerty, в коде проверяется на тип. если строка то выводит 1, иначе выводит 2. как вот проверить отправленное мной qwerty. и использовать его для другого куска кода.

★★
Ответ на: комментарий от gssomi

Так у тебя декорируется только extract_number_i (если я ничего не путаю). Вызовов extract_number_a и extract_number_k я не вижу, по этому получаешь только «before». «result» я предлагал сделать так (тем более для else он у тебя не определен получается):

def extract_number_i(m):
	i = m.text
	i = int("".join([s if s.isdigit() else "" for s in i]))
		result = 'before'
	else:
		result = 'i is None'
        
        bot.send_message(m.chat.id, result)
        return
alozovskoy ★★★★★
()
Ответ на: комментарий от menangen

угу, я все было нормально пока директор не сходил на битриксовую конференцию. Там ему показали Битрикс-24. Сейчас юзаем его. =( А тот проект пока завернули.

gssomi ★★
() автор топика
Ответ на: комментарий от alozovskoy

Так у тебя декорируется только extract_number_i (если я ничего не путаю). Вызовов extract_number_a и extract_number_k я не вижу, по этому получаешь только «before».

как их вызывать? если в конце писать return extract_number_a, все выводиться не дождавшись ответа.

gssomi ★★
() автор топика
Ответ на: комментарий от menangen

Ох, тыж. Крутая статья. Спасибо.

gssomi ★★
() автор топика
Ответ на: комментарий от gssomi

return что-то возвращает. То есть если ты добавишь return extract_number_a и вызовешь

foobar = extract_number_i('текст сообщения')

то бот отправит текст, а foobar станет ссылкой на функцию extract_number_a. Тебе надо делать что-то вроде такого:

def extract_number_i(m):
        <тут код функции>

def extract_number_a(m):
        <тут код функции>

def extract_number_k(m):
        <тут код функции>

def RandomLog():
        <тут код функции>

@bot.message_handler()
def sendAnsw(m)
        <какой-то код>
        extract_number_i(m)
        <еще немного кода>
        extract_number_a(m)
        <ну и так далее>

В итоге твой бот отправит сообщения и в результате работы extract_number_i, и в extract_number_a, при этом все это будет обрабатываться в контексте прихода одного (т.е. каждого) сообщения боту.

alozovskoy ★★★★★
()
Ответ на: комментарий от gssomi

Напиши на python_ru в G+. Там есть много классных продакшен разрабов. Помогу 150%.

deterok ★★★★★
()
Ответ на: комментарий от Int0l

У меня знаешь, даже предубеждение такое на мировом рынке - если клиент русский, то будет экономить деньги по жёсткому (а точнее их тупо жать): будет использовать шаред хостинги, сливать кучу проектов (200-500) все в один сервер на старой-престарой CentOs, наймёт админа за 5 баксов в час, который настроит всё так, как поп: будет понятно только ему что где и как лежит (чтобы его дёргали и платили за элементарные настройки), будет нанимать слабых разработчиков и платить им минимальное время, зажимать деньги на обед, типа ты не работал в это время и т.п. муть - лишь бы сэкономить лишний рубль. Также будет держать возле себя программистов-рабов, которым в силу их тупости деться некуда, и они с ним будут работать 10 лет за 10 баксов в час клепая те самые php клоны на Битриксах и Joomla.

А потом знаешь что? Найдёт на внешнем рынке (к примеру в Германии или Голландии) дурачков (и по своему тоже жмотов), которые купят его мега CRM, которую пилили все эти товарищи, за приличную сумму баксов, сам поедет на Кипр и будет там орешки жрать, баб обнимать.

И ещё потом в местной алко кафешке на пляже будет втирать какой он мега предприниматель и успешный альфа самец. Потом они уверывают в себя и трут по всяким деревням за мкадом о том же.

menangen ★★★★★
()
Ответ на: комментарий от gssomi

А должно быть не сразу? Если я правильно понимаю у тебя приходит сообщение, парсится, по нему выполняются функции extract_number_* и выполняется ответ, это не так? Если тебе нужно чтоб (например) extract_number_i выполнялся при первом сообщении, потом на каждое отправлялся результат extract_number_a и на последнее сообщение (как бот это поймет?) extract_number_k, то надо либо какие-то служебные слова встраивать, либо заводить переменные со счетчиком кол-ва сообщений или указанием на необходимость выполнения определенной функции, в общем в таком духе.

extI = True
def extract_number_i(m):
    global extI //Не знаю на сколько это корректно, наверно есть способы лучше
    if extI:
        <код>
        <отправка сообщения>
        <etc>
    extI = False
alozovskoy ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.