#python
#python
Вопрос:
Я создаю программу, которая собирает информацию о шине с сервера и отправляет ее пользователю через Facebook Messenger. Это работает нормально, но я пытаюсь добавить функциональность, которая разбивает действительно длинные расписания на отдельные сообщения. Для этого мне пришлось создать оператор if, который обнаруживает действительно длинные расписания, разделяет их и вызывает send_message
функцию из моего основного файла, app.py
Вот часть функции app
с переменной, которую мне нужно извлечь:
for messaging_event in entry["messaging"]:
if messaging_event.get("message"): # someone sent us a message
sender_id = messaging_event["sender"]["id"] # the facebook ID of the person sending you the message
recipient_id = messaging_event["recipient"]["id"] # the recipient's ID, which should be your page's facebook ID
message_text = messaging_event["message"]["text"] # the message's text
tobesent = messaging_event["message"]["text"]
send_message(sender_id, fetch.fetchtime(tobesent))
и вот оператор if, в fetch
котором обнаруживает длинные сообщения, разделяет их и вызывает send_message
функцию из другого файла, app.py
:
if len(info["results"]) > 5:
for i, chunk in enumerate(chunks(info, 5), 1):
app.send_message((USER ID SHOULD BE HERE, 'Listing part: {}n n{}'.format(i, chunk)))
Я пытаюсь вызвать send_message
функцию из app.py
, но для этого требуется два аргумента sender_id
и текст сообщения. Как я могу получить sender_id
переменную из этой функции и использовать ее в fetch
? Я пытался вернуть ее и вызвать функцию, но у меня это не работает.
РЕДАКТИРОВАТЬ: ошибка
Traceback (most recent call last):
File "bus.py", line 7, in <module>
print fetch.fetchtime(stopnum)
File "/home/ryan/fb-messenger-bot-master/fetch.py", line 17, in fetchtime
send_message((webhook(),'Listing part: {}n n{}'.format(i, chunk)))
File "/home/ryan/fb-messenger-bot-master/app.py", line 30, in webhook
data = request.get_json()
File "/usr/local/lib/python2.7/dist-packages/werkzeug/local.py", line 343, in __getattr__
return getattr(self._get_current_object(), name)
File "/usr/local/lib/python2.7/dist-packages/werkzeug/local.py", line 302, in _get_current_object
return self.__local()
File "/usr/local/lib/python2.7/dist-packages/flask/globals.py", line 37, in _lookup_req_object
raise RuntimeError(_request_ctx_err_msg)
RuntimeError: Working outside of request context.
This typically means that you attempted to use functionality that needed
an active HTTP request. Consult the documentation on testing for
information about how to avoid this problem.
Комментарии:
1. Мы не понимаем вашу проблему.
2. Вы получаете сообщение об ошибке? Всегда показывайте это. Добавьте полное сообщение об ошибке в свой вопрос.
3. Как вы вызываете
app.py
код изfetch.py
—fetch.some_function(...)
? Вы не можете позвонитьfetch.some_function(sender_id , ...)
?4. @furas я использую
from app import *
— я пытаюсь вызватьsend_message
функцию внутриapp
изfetch
5. @furas Я добавил ошибку.