sync-addons
sync-addons copied to clipboard
sync_telegram: error when the bot is blocked
Steps to reproduce the error:
- Start messaging with the bot via telegram and block it after that
- Try to send a message via Odoo with the user without
Administration/Settings
access rights Result: You'll see something like that:
If we try to send the message via the user with Administration/Settings
access rights we'll get this error:
Odoo Server Error
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_http.py", line 237, in _dispatch
result = request.dispatch()
File "/usr/lib/python3/dist-packages/odoo/http.py", line 683, in dispatch
result = self._call_function(**self.params)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 359, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/service/model.py", line 94, in wrapper
return f(dbname, *args, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 347, in checked_call
result = self.endpoint(*a, **kw)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 912, in __call__
return self.method(*args, **kw)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 531, in response_wrap
response = f(*args, **kw)
File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 1377, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 1369, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/api.py", line 396, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/api.py", line 383, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/addons/mail/models/mail_channel.py", line 416, in message_post
message = super(Channel, self.with_context(mail_create_nosubscribe=True)).message_post(message_type=message_type, moderation_status=moderation_status, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/addons/mail/models/mail_thread.py", line 1888, in message_post
self._notify_thread(new_message, values, **notif_kwargs)
File "/usr/lib/python3/dist-packages/odoo/addons/mail/models/mail_channel.py", line 542, in _notify_thread
super(Channel, self)._notify_thread(message, msg_vals=msg_vals, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/addons/sms/models/mail_thread.py", line 236, in _notify_thread
recipients_data = super(MailThread, self)._notify_thread(message, msg_vals=msg_vals, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/addons/mail/models/mail_thread.py", line 2135, in _notify_thread
self._notify_record_by_inbox(message, rdata, msg_vals=msg_vals, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/addons/mail/models/mail_thread.py", line 2153, in _notify_record_by_inbox
message.write({'channel_ids': [(6, 0, channel_ids)]})
File "/usr/lib/python3/dist-packages/odoo/addons/base_automation/models/base_automation.py", line 348, in write
action._process(records, domain_post=domain_post)
File "/usr/lib/python3/dist-packages/odoo/addons/base_automation/models/base_automation.py", line 273, in _process
raise e
File "/usr/lib/python3/dist-packages/odoo/addons/base_automation/models/base_automation.py", line 270, in _process
self.action_server_id.sudo().with_context(**ctx).run()
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_actions.py", line 629, in run
res = runner(run_self, eval_context=eval_context)
File "/usr/lib/python3/dist-packages/odoo/addons/website/models/ir_actions.py", line 61, in _run_action_code_multi
res = super(ServerAction, self)._run_action_code_multi(eval_context)
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_actions.py", line 498, in _run_action_code_multi
safe_eval(self.code.strip(), eval_context, mode="exec", nocopy=True) # nocopy allows to return 'action'
File "/usr/lib/python3/dist-packages/odoo/tools/safe_eval.py", line 346, in safe_eval
raise ValueError('%s: "%s" while evaluating\n%r' % (ustr(type(e)), ustr(e), expr))
Exception
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/odoo/http.py", line 639, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 315, in _handle_exception
raise exception.with_traceback(None) from new_cause
ValueError: <class 'ValueError'>: "<class 'telegram.error.Unauthorized'>: "Forbidden: bot was blocked by the user" while evaluating
'\ndef handle_db(records):\n # records are instances of mail.message\n for mail_message in records:\n for channel in mail_message.channel_ids:\n if channel.channel_type != \'telegram\':\n continue\n channel_link = channel.search_links(TG_CHAT_CHANNEL_REL)\n if not channel_link:\n continue\n\n telegram_user_ref = channel_link.external\n #channel_link = get_link(TG_CHAT_CHANNEL_REL, telegram_user_ref)\n\n if not mail_message.author_id.search_links(TG_PARTNER_REL) and mail_message.author_id.id != odoobot_id:\n log("MESSAGE from odoo: channel_id %s - author_id %s - attachment_ids: %s - message_text: %s" % (mail_message.res_id, mail_message.author_id.id, mail_message.attachment_ids, mail_message.body), LOG_DEBUG)\n\n if mail_message.body:\n message_html = "%s\\n\\n<i>%s</i>" % (mail_message.body, mail_message.author_id.name)\n telegram.sendMessage(telegram_user_ref, message_html, parse_mode=\'HTML\')\n\n if mail_message.attachment_ids:\n for attach in mail_message.attachment_ids:\n log("ATTACHMENT from odoo: attach.id %s - name %s" % (attach.name, attach.id), LOG_INFO)\n\n if attach.mimetype and "/" in attach.mimetype and attach.mimetype.split("/")[0] == "image":\n if attach.file_size < telegram.MAX_SIZE_IMAGE:\n telegram.sendPhoto(telegram_user_ref, attach.datas)\n else:\n channel.message_post(body="You cannot send more than 10 MB for photos.",\n author_id=odoobot_id, message_type="comment", subtype_xmlid="mail.mt_comment")\n else:\n if attach.file_size < telegram.MAX_SIZE_DOCUMENT:\n telegram.sendDocument(telegram_user_ref, attach.name, attach.datas)\n else:\n channel.message_post(body="You cannot send more than 50 MB for documents.",\n author_id=odoobot_id, message_type="comment", subtype_xmlid="mail.mt_comment")\n\n\n\n \nEXECUTION_RESULT_ = handle_db(*EXECUTION_ARGS_, **EXECUTION_KWARGS_)\n '" while evaluating
'env["sync.trigger.automation"].browse(4).sudo().start(records)'
Expected behavior: in cases when the user blocks the Bot in Odoo we need to understand what's happened without any errors
via Hubstaff User: Denis Mudarisov
Project: sync-addons - https://app.hubstaff.com/projects/1618283 Date Range: 08/19/21 - 08/19/21 Work session total: 0:39:30 Billable: Yes
Grand total: 0:39:30
via Hubstaff User: Denis Mudarisov
Project: sync-addons - https://app.hubstaff.com/projects/1618283 Date Range: 08/09/21 - 08/20/21 Work session total: 2:35:03 Billable: Yes
Grand total: 3:14:33
More detailed error:
Odoo Server Error
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_http.py", line 237, in _dispatch
result = request.dispatch()
File "/usr/lib/python3/dist-packages/odoo/http.py", line 683, in dispatch
result = self._call_function(**self.params)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 359, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/service/model.py", line 94, in wrapper
return f(dbname, *args, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 347, in checked_call
result = self.endpoint(*a, **kw)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 912, in __call__
return self.method(*args, **kw)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 531, in response_wrap
response = f(*args, **kw)
File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 1389, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 1381, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/api.py", line 396, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/api.py", line 383, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/addons/mail/models/mail_channel.py", line 426, in message_post
message = super(Channel, self.with_context(mail_create_nosubscribe=True, mail_post_autofollow=False)).message_post(message_type=message_type, moderation_status=moderation_status, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/addons/mail/models/mail_thread.py", line 1896, in message_post
self._notify_thread(new_message, values, **notif_kwargs)
File "/usr/lib/python3/dist-packages/odoo/addons/mail/models/mail_channel.py", line 552, in _notify_thread
super(Channel, self)._notify_thread(message, msg_vals=msg_vals, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/addons/sms/models/mail_thread.py", line 238, in _notify_thread
recipients_data = super(MailThread, self)._notify_thread(message, msg_vals=msg_vals, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/addons/mail/models/mail_thread.py", line 2143, in _notify_thread
self._notify_record_by_inbox(message, rdata, msg_vals=msg_vals, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/addons/mail/models/mail_thread.py", line 2161, in _notify_record_by_inbox
message.write({'channel_ids': [(6, 0, channel_ids)]})
File "/usr/lib/python3/dist-packages/odoo/addons/base_automation/models/base_automation.py", line 348, in write
action._process(records, domain_post=domain_post)
File "/usr/lib/python3/dist-packages/odoo/addons/base_automation/models/base_automation.py", line 273, in _process
raise e
File "/usr/lib/python3/dist-packages/odoo/addons/base_automation/models/base_automation.py", line 270, in _process
self.action_server_id.sudo().with_context(**ctx).run()
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_actions.py", line 632, in run
res = runner(run_self, eval_context=eval_context)
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_actions.py", line 501, in _run_action_code_multi
safe_eval(self.code.strip(), eval_context, mode="exec", nocopy=True) # nocopy allows to return 'action'
File "/usr/lib/python3/dist-packages/odoo/tools/safe_eval.py", line 346, in safe_eval
raise ValueError('%s: "%s" while evaluating\n%r' % (ustr(type(e)), ustr(e), expr))
Exception
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/odoo/http.py", line 639, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 315, in _handle_exception
raise exception.with_traceback(None) from new_cause
ValueError: <class 'ValueError'>: "<class 'telegram.error.Unauthorized'>: "Forbidden: bot was blocked by the user" while evaluating
'\ndef handle_db(records):\n # records are instances of mail.message\n for mail_message in records:\n for channel in mail_message.channel_ids:\n if channel.channel_type != \'multi_livechat_telegram\':\n continue\n channel_link = channel.search_links(TG_CHAT_CHANNEL_REL)\n if not channel_link:\n continue\n\n telegram_user_ref = channel_link.external\n #channel_link = get_link(TG_CHAT_CHANNEL_REL, telegram_user_ref)\n\n if not mail_message.author_id.search_links(TG_PARTNER_REL) and mail_message.author_id.id != odoobot_id:\n log("MESSAGE from odoo: channel_id %s - author_id %s - attachment_ids: %s - message_text: %s" % (mail_message.res_id, mail_message.author_id.id, mail_message.attachment_ids, mail_message.body), LOG_DEBUG)\n\n if mail_message.body:\n message_html = "%s\\n\\n<i>%s</i>" % (mail_message.body, mail_message.author_id.name)\n telegram.sendMessage(telegram_user_ref, message_html, parse_mode=\'HTML\')\n\n if mail_message.attachment_ids:\n for attach in mail_message.attachment_ids:\n log("ATTACHMENT from odoo: attach.id %s - name %s" % (attach.name, attach.id), LOG_INFO)\n\n if attach.mimetype and "/" in attach.mimetype and attach.mimetype.split("/")[0] == "image":\n if attach.file_size < telegram.MAX_SIZE_IMAGE:\n telegram.sendPhoto(telegram_user_ref, attach.datas)\n else:\n channel.message_post(body="You cannot send more than 10 MB for photos.",\n author_id=odoobot_id, message_type="comment", subtype_xmlid="mail.mt_comment")\n else:\n if attach.file_size < telegram.MAX_SIZE_DOCUMENT:\n telegram.sendDocument(telegram_user_ref, attach.name, attach.datas)\n else:\n channel.message_post(body="You cannot send more than 50 MB for documents.",\n author_id=odoobot_id, message_type="comment", subtype_xmlid="mail.mt_comment")\n\n\n\n \nEXECUTION_RESULT_ = handle_db(*EXECUTION_ARGS_, **EXECUTION_KWARGS_)\n '" while evaluating
'env["sync.trigger.automation"].browse(4).sudo().start(records)'
via Hubstaff User: Denis Mudarisov
Project: sync-addons - https://app.hubstaff.com/projects/1618283 Date Range: 08/20/21 - 08/23/21 Work session total: 1:01:24 Billable: Yes
Grand total: 4:15:57
via Hubstaff User: Denis Mudarisov
Project: sync-addons - https://app.hubstaff.com/projects/1618283 Date Range: 08/24/21 - 08/24/21 Work session total: 0:40:47 Billable: Yes
Grand total: 4:56:44
via Hubstaff User: Denis Mudarisov
Project: sync-addons - https://app.hubstaff.com/projects/1618283 Date Range: 08/24/21 - 08/24/21 Work session total: 0:00:52 Billable: Yes
Grand total: 4:57:36
via Hubstaff User: Denis Mudarisov
Project: sync-addons - https://app.hubstaff.com/projects/1618283 Date Range: 08/26/21 - 08/26/21 Work session total: 0:19:16 Billable: Yes
Grand total: 5:16:52