leadguru-jobs 0.644.0__py3-none-any.whl → 0.646.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: leadguru_jobs
3
- Version: 0.644.0
3
+ Version: 0.646.0
4
4
  Summary: LGT jobs builds
5
5
  Author-email: developer@leadguru.co
6
6
  Classifier: Development Status :: 5 - Production/Stable
@@ -12,11 +12,11 @@ lgt_jobs/assets/images/logo.png,sha256=nt377FGkBalBF9Z9TYQRv9loHolTXwU8_VRYvCXXz
12
12
  lgt_jobs/assets/images/mail.png,sha256=eORzQcAMkFr7DjgtABVhJ_zFuXgO7OXv78lLF4b39B0,7168
13
13
  lgt_jobs/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
14
  lgt_jobs/jobs/analytics.py,sha256=IIsWt4A1qUw3w-S-8W16uKY1FRVWfXXA41_mu4uCNiM,979
15
- lgt_jobs/jobs/bot_stats_update.py,sha256=COwSaw0conDZOcdI5VkyW4vTFIo6PFn9LgvhTejYYeQ,8448
15
+ lgt_jobs/jobs/bot_stats_update.py,sha256=Q89ID9iIbdLcMIWuDFIW0qZnbEPp8E2MJdM-YvqK3hE,8488
16
16
  lgt_jobs/jobs/chat_history.py,sha256=rj337uHT2XmyDu3oMPbnCBxSsRn4roxDNS0hsbvoI7I,5040
17
17
  lgt_jobs/jobs/connect_sources.py,sha256=vOKu2Q9cmQsj4VMVzOoEJkD1wzE9XurbIChx35rES8I,4957
18
18
  lgt_jobs/jobs/inbox_leads.py,sha256=6UhPp9AfSAGb3elFDT6jm7j2HZ9jPOPngsUj-hUKAYw,4867
19
- lgt_jobs/jobs/load_slack_people.py,sha256=JEggnsWvfA7L45lObwuBFIvBVhwfePbq08E89VXpI8E,3264
19
+ lgt_jobs/jobs/load_slack_people.py,sha256=-KzMYHFpmSEuoiSgHd3fUu4mPOfcZOY0t2WNIXcMXpk,4373
20
20
  lgt_jobs/jobs/mass_message.py,sha256=1mFcBlL2MhzLbj5yrd_NyJc7TXDWCcROAzGDnr0miMU,2035
21
21
  lgt_jobs/jobs/send_code.py,sha256=dIlLPkG3GgGKIEqGiElyzrtdrnJNTL1Ak2V0xnE-WIQ,824
22
22
  lgt_jobs/jobs/send_slack_message.py,sha256=yJVzGQijM5KL-QDA0EQy-8-kvR7TSZmRw-4tX1ge5Hk,2343
@@ -34,7 +34,7 @@ lgt_jobs/lgt_common/pubsub/messages.py,sha256=rm7uKbxwDTWJqsVA8Kee-4YT58bThjCEV2
34
34
  lgt_jobs/lgt_common/pubsub/pubsubfactory.py,sha256=rfUDooYuhBQ2pE9FdDxZOpXjbrvlpiiQLCGOtnTFbSg,2204
35
35
  lgt_jobs/lgt_common/slack_client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
36
  lgt_jobs/lgt_common/slack_client/methods.py,sha256=ctKF_1UHEmSWaRsoGEgMZicVabV7eEufZ7pjxdMAx8g,1455
37
- lgt_jobs/lgt_common/slack_client/slack_client.py,sha256=SR3YjJCJ-_8BPu29sFtF0ULijNL3QkBrvp_JXkm4DDk,13806
37
+ lgt_jobs/lgt_common/slack_client/slack_client.py,sha256=PBOkEeLSr6PnI9NDA2NGFbzJmJ61Cz3_0oOb3EHx81I,14034
38
38
  lgt_jobs/lgt_common/slack_client/web_client.py,sha256=WCu8mqYhauuxp9iDAMsjocchKD78iWdcnbu7Ozdyzq8,3448
39
39
  lgt_jobs/lgt_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
40
  lgt_jobs/lgt_data/analytics.py,sha256=yfrFPXrBofzZqUNn479JkrbZXDa2ljgk-Le0YrQ9rew,21690
@@ -103,7 +103,7 @@ lgt_jobs/lgt_data/repositories/post/posts.py,sha256=ZA19L-CYdxLhlapyMQtSJzP3QMUl
103
103
  lgt_jobs/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
104
104
  lgt_jobs/services/web_client.py,sha256=oMyWJxwGeIe3f40fPT7xcisjDg3BhA3Ipf8dr1jVT-Y,1549
105
105
  lgt_jobs/templates/new_message.html,sha256=dZl8UmdAOOMq4nidvAgMFroSrTV7Pw0RWt2yLp_2idg,6989
106
- leadguru_jobs-0.644.0.dist-info/METADATA,sha256=iURGZmMR-3KsK4Fx4GOibp0_KkOgAE0bRdSUbwPsV6E,1319
107
- leadguru_jobs-0.644.0.dist-info/WHEEL,sha256=HiCZjzuy6Dw0hdX5R3LCFPDmFS4BWl8H-8W39XfmgX4,91
108
- leadguru_jobs-0.644.0.dist-info/top_level.txt,sha256=rIuw1DqwbnZyeoarBSC-bYeGOhv9mZBs7_afl9q4_JI,9
109
- leadguru_jobs-0.644.0.dist-info/RECORD,,
106
+ leadguru_jobs-0.646.0.dist-info/METADATA,sha256=L2n2GGBitT-zJI42vG_t_AtwwNagjZG8AkLMsbJb398,1319
107
+ leadguru_jobs-0.646.0.dist-info/WHEEL,sha256=nCVcAvsfA9TDtwGwhYaRrlPhTLV9m-Ga6mdyDtuwK18,91
108
+ leadguru_jobs-0.646.0.dist-info/top_level.txt,sha256=rIuw1DqwbnZyeoarBSC-bYeGOhv9mZBs7_afl9q4_JI,9
109
+ leadguru_jobs-0.646.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (72.2.0)
2
+ Generator: setuptools (73.0.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -51,7 +51,7 @@ class BotStatsUpdateJob(BaseBackgroundJob, ABC):
51
51
 
52
52
  discord_servers = [Server.from_dic(server) for server in servers_response]
53
53
  discord_user: DiscordUser = user.get_discord_user(bot.user_name)
54
- available_channels_types = [0, 5]
54
+ available_channels_types = [0, 5, 15]
55
55
  if discord_user:
56
56
  discord_user.workspaces = discord_servers
57
57
  users_rep.set(user.id, discord_users=[user.to_dic() for user in user.discord_users])
@@ -62,7 +62,8 @@ class BotStatsUpdateJob(BaseBackgroundJob, ABC):
62
62
  discord_server.deleted = server.deleted
63
63
  else:
64
64
  discord_server.deleted = True
65
- discord_channels = [Channel.from_dic(channel) for channel in client.get_channels(discord_server.id)
65
+ channels = client.get_channels(discord_server.id)
66
+ discord_channels = [Channel.from_dic(channel) for channel in channels
66
67
  if channel.get('type', 0) in available_channels_types]
67
68
  for discord_channel in discord_channels:
68
69
  if server:
@@ -1,4 +1,8 @@
1
+ import random
1
2
  from abc import ABC
3
+ from datetime import datetime, UTC
4
+ from time import sleep
5
+
2
6
  from lgt_jobs.lgt_common.enums.slack_errors import SlackErrors
3
7
  from lgt_jobs.lgt_common.slack_client.slack_client import SlackClient
4
8
  from lgt_jobs.lgt_data.models.bots.base_bot import Source
@@ -48,6 +52,7 @@ class LoadSlackPeopleJob(BaseBackgroundJob, ABC):
48
52
  return
49
53
 
50
54
  for member in list_users_response["members"]:
55
+ sleep(random.uniform(0, 1))
51
56
  if not member.get("profile"):
52
57
  continue
53
58
 
@@ -60,8 +65,27 @@ class LoadSlackPeopleJob(BaseBackgroundJob, ABC):
60
65
  source.source_type = bot.source.source_type
61
66
  member_info: SlackMemberInformation = SlackMemberInformation.from_slack_response(member, source)
62
67
  members_count += 1
68
+ presence_response = client.get_presence(member_info.sender_id)
69
+ last_activity = None
70
+ if presence_response.status_code == 200:
71
+ presence_data = presence_response.json()
72
+ if presence_data.get('ok'):
73
+ now = datetime.now(UTC)
74
+ online = presence_data.get('presence')
75
+ if presence_data.get('online'):
76
+ online = 'active'
77
+ last_activity = datetime.fromtimestamp(presence_data.get('last_activity'), tz=UTC) \
78
+ if presence_data.get('last_activity') else None
79
+ if online == 'active':
80
+ last_activity = now
81
+
82
+ member_info.online = online
83
+ member_info.online_updated_at = now
84
+
63
85
  member_info_dic = member_info.to_dic()
64
86
  member_info_dic.pop('created_at')
87
+ if last_activity:
88
+ member_info_dic['last_activity'] = last_activity
65
89
  SlackContactUserRepository().collection().update_one({"sender_id": member_info.sender_id,
66
90
  "source.source_id": source.source_id},
67
91
  {"$set": member_info_dic}, upsert=True)
@@ -24,6 +24,10 @@ class SlackClient:
24
24
  else:
25
25
  self.cookies = cookies
26
26
 
27
+ def get_presence(self, user_id: str) -> Response:
28
+ url = f'{self.base_url}{SlackMethods.users_get_presence}'
29
+ return requests.get(url=url, headers=self.headers, cookies=self.cookies, params={'user': user_id})
30
+
27
31
  def join_channels(self, channels):
28
32
  loop = asyncio.new_event_loop()
29
33
  asyncio.set_event_loop(loop)