rustplus 5.6.14__tar.gz → 5.6.16__tar.gz

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.
Files changed (121) hide show
  1. {rustplus-5.6.14/rustplus.egg-info → rustplus-5.6.16}/PKG-INFO +2 -1
  2. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/__init__.py +1 -1
  3. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/base_rust_api.py +12 -0
  4. rustplus-5.6.16/rustplus/api/icons/arctic_base.png +0 -0
  5. rustplus-5.6.16/rustplus/api/icons/desert_base.png +0 -0
  6. rustplus-5.6.16/rustplus/api/icons/ferryterminal.png +0 -0
  7. rustplus-5.6.16/rustplus/api/icons/harbour.png +0 -0
  8. rustplus-5.6.16/rustplus/api/icons/mining_quarry_hqm.png +0 -0
  9. rustplus-5.6.16/rustplus/api/icons/mining_quarry_stone.png +0 -0
  10. rustplus-5.6.16/rustplus/api/icons/mining_quarry_sulfur.png +0 -0
  11. rustplus-5.6.16/rustplus/api/icons/missile_silo.png +0 -0
  12. rustplus-5.6.16/rustplus/api/icons/patrol.png +0 -0
  13. rustplus-5.6.16/rustplus/api/icons/stables.png +0 -0
  14. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/remote/rust_remote_interface.py +8 -0
  15. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/remote/rustws.py +44 -6
  16. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/rust_api.py +2 -0
  17. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/structures/rust_marker.py +3 -0
  18. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/commands/command_handler.py +4 -3
  19. {rustplus-5.6.14 → rustplus-5.6.16/rustplus.egg-info}/PKG-INFO +2 -1
  20. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus.egg-info/requires.txt +1 -0
  21. rustplus-5.6.14/rustplus/api/icons/arctic_base.png +0 -0
  22. rustplus-5.6.14/rustplus/api/icons/desert_base.png +0 -0
  23. rustplus-5.6.14/rustplus/api/icons/ferryterminal.png +0 -0
  24. rustplus-5.6.14/rustplus/api/icons/harbour.png +0 -0
  25. rustplus-5.6.14/rustplus/api/icons/mining_quarry_hqm.png +0 -0
  26. rustplus-5.6.14/rustplus/api/icons/mining_quarry_stone.png +0 -0
  27. rustplus-5.6.14/rustplus/api/icons/mining_quarry_sulfur.png +0 -0
  28. rustplus-5.6.14/rustplus/api/icons/missile_silo.png +0 -0
  29. rustplus-5.6.14/rustplus/api/icons/patrol.png +0 -0
  30. rustplus-5.6.14/rustplus/api/icons/stables.png +0 -0
  31. {rustplus-5.6.14 → rustplus-5.6.16}/LICENSE +0 -0
  32. {rustplus-5.6.14 → rustplus-5.6.16}/MANIFEST.in +0 -0
  33. {rustplus-5.6.14 → rustplus-5.6.16}/README.md +0 -0
  34. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/__init__.py +0 -0
  35. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/__init__.py +0 -0
  36. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/airfield.png +0 -0
  37. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/bandit.png +0 -0
  38. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/barn.png +0 -0
  39. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/cargo.png +0 -0
  40. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/chinook.png +0 -0
  41. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/chinook_blades.png +0 -0
  42. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/crate.png +0 -0
  43. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/dome.png +0 -0
  44. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/excavator.png +0 -0
  45. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/explosion.png +0 -0
  46. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/fishing.png +0 -0
  47. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/icon.png +0 -0
  48. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/junkyard.png +0 -0
  49. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/large_oil_rig.png +0 -0
  50. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/launchsite.png +0 -0
  51. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/lighthouse.png +0 -0
  52. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/military_tunnels.png +0 -0
  53. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/mining_outpost.png +0 -0
  54. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/outpost.png +0 -0
  55. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/oxums.png +0 -0
  56. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/power_plant.png +0 -0
  57. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/satellite.png +0 -0
  58. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/sewer.png +0 -0
  59. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/small_oil_rig.png +0 -0
  60. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/supermarket.png +0 -0
  61. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/swamp.png +0 -0
  62. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/train.png +0 -0
  63. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/train_yard.png +0 -0
  64. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/underwater_lab.png +0 -0
  65. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/vending_machine.png +0 -0
  66. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/icons/water_treatment.png +0 -0
  67. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/remote/__init__.py +0 -0
  68. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/remote/camera/__init__.py +0 -0
  69. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/remote/camera/camera_constants.py +0 -0
  70. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/remote/camera/camera_manager.py +0 -0
  71. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/remote/camera/camera_parser.py +0 -0
  72. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/remote/camera/structures.py +0 -0
  73. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/remote/events/__init__.py +0 -0
  74. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/remote/events/event_handler.py +0 -0
  75. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/remote/events/event_loop_manager.py +0 -0
  76. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/remote/events/events.py +0 -0
  77. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/remote/events/handler_list.py +0 -0
  78. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/remote/events/map_event_listener.py +0 -0
  79. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/remote/events/registered_listener.py +0 -0
  80. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/remote/fcm_listener.py +0 -0
  81. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/remote/heartbeat.py +0 -0
  82. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/remote/ratelimiter.py +0 -0
  83. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/remote/rplus_version_handler.py +0 -0
  84. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/remote/rustplus_proto/__init__.py +0 -0
  85. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/remote/rustplus_proto/rustplus.py +0 -0
  86. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/remote/server_checker.py +0 -0
  87. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/structures/__init__.py +0 -0
  88. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/structures/rust_chat_message.py +0 -0
  89. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/structures/rust_contents.py +0 -0
  90. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/structures/rust_entity_info.py +0 -0
  91. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/structures/rust_info.py +0 -0
  92. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/structures/rust_item.py +0 -0
  93. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/structures/rust_map.py +0 -0
  94. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/structures/rust_team_info.py +0 -0
  95. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/structures/rust_time.py +0 -0
  96. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/structures/serialization.py +0 -0
  97. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/api/structures/util.py +0 -0
  98. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/commands/__init__.py +0 -0
  99. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/commands/command.py +0 -0
  100. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/commands/command_data.py +0 -0
  101. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/commands/command_options.py +0 -0
  102. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/conversation/__init__.py +0 -0
  103. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/conversation/conversation.py +0 -0
  104. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/conversation/conversation_factory.py +0 -0
  105. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/conversation/conversation_prompt.py +0 -0
  106. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/exceptions/__init__.py +0 -0
  107. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/exceptions/exceptions.py +0 -0
  108. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/utils/__init__.py +0 -0
  109. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/utils/deprecated.py +0 -0
  110. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/utils/emojis.py +0 -0
  111. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/utils/fonts/PermanentMarker.ttf +0 -0
  112. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/utils/fonts/__init__.py +0 -0
  113. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/utils/grab_items.py +0 -0
  114. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/utils/rust_utils.py +0 -0
  115. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/utils/server_id.py +0 -0
  116. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus/utils/yielding_event.py +0 -0
  117. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus.egg-info/SOURCES.txt +0 -0
  118. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus.egg-info/dependency_links.txt +0 -0
  119. {rustplus-5.6.14 → rustplus-5.6.16}/rustplus.egg-info/top_level.txt +0 -0
  120. {rustplus-5.6.14 → rustplus-5.6.16}/setup.cfg +0 -0
  121. {rustplus-5.6.14 → rustplus-5.6.16}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rustplus
3
- Version: 5.6.14
3
+ Version: 5.6.16
4
4
  Summary: A python wrapper for the Rust Plus API
5
5
  Home-page: https://github.com/olijeffers0n/rustplus
6
6
  Author: olijeffers0n
@@ -18,6 +18,7 @@ Requires-Dist: requests
18
18
  Requires-Dist: numpy
19
19
  Requires-Dist: scipy
20
20
  Requires-Dist: betterproto==2.0.0b6
21
+ Requires-Dist: shlex
21
22
 
22
23
  ![Rust+.py](https://raw.githubusercontent.com/olijeffers0n/rustplus/master/icon.png)
23
24
  <div align = "center">
@@ -22,5 +22,5 @@ from .utils import *
22
22
 
23
23
  __name__ = "rustplus"
24
24
  __author__ = "olijeffers0n"
25
- __version__ = "5.6.14"
25
+ __version__ = "5.6.16"
26
26
  __support__ = "Discord: https://discord.gg/nQqJe8qvP8"
@@ -38,6 +38,7 @@ class BaseRustSocket:
38
38
  use_test_server: bool = False,
39
39
  event_loop: asyncio.AbstractEventLoop = None,
40
40
  rate_limiter: RateLimiter = None,
41
+ debug: bool = False,
41
42
  ) -> None:
42
43
  if ip is None:
43
44
  raise ValueError("Ip cannot be None")
@@ -46,6 +47,16 @@ class BaseRustSocket:
46
47
  if player_token is None:
47
48
  raise ValueError("PlayerToken cannot be None")
48
49
 
50
+ try:
51
+ steam_id = int(steam_id)
52
+ except ValueError:
53
+ raise ValueError("SteamID must be an integer")
54
+
55
+ try:
56
+ player_token = int(player_token)
57
+ except ValueError:
58
+ raise ValueError("PlayerToken must be an integer")
59
+
49
60
  self.server_id = ServerID(ip, port, steam_id, player_token)
50
61
  self.seq = 1
51
62
  self.command_options = command_options
@@ -65,6 +76,7 @@ class BaseRustSocket:
65
76
  api=self,
66
77
  use_test_server=use_test_server,
67
78
  rate_limiter=rate_limiter,
79
+ debug=debug,
68
80
  )
69
81
 
70
82
  if heartbeat is None:
@@ -32,6 +32,7 @@ class RustRemote:
32
32
  api=None,
33
33
  use_test_server: bool = False,
34
34
  rate_limiter: RateLimiter = None,
35
+ debug: bool = False,
35
36
  ) -> None:
36
37
  self.server_id = server_id
37
38
  self.api = api
@@ -65,6 +66,7 @@ class RustRemote:
65
66
  self.use_test_server = use_test_server
66
67
  self.pending_entity_subscriptions = []
67
68
  self.camera_manager: Union[CameraManager, None] = None
69
+ self.debug = debug
68
70
 
69
71
  async def connect(
70
72
  self,
@@ -86,6 +88,7 @@ class RustRemote:
86
88
  delay=delay,
87
89
  on_success_args_kwargs=on_success_args_kwargs,
88
90
  on_failure_args_kwargs=on_failure_args_kwargs,
91
+ debug=self.debug,
89
92
  )
90
93
  await self.ws.connect(retries=retries)
91
94
 
@@ -112,6 +115,11 @@ class RustRemote:
112
115
  if self.ws is None:
113
116
  raise ClientNotConnectedError("No Current Websocket Connection")
114
117
 
118
+ if self.debug:
119
+ self.logger.info(
120
+ f"[RustPlus.py] Sending Message with seq {request.seq}: {request}"
121
+ )
122
+
115
123
  self.pending_response_events[request.seq] = YieldingEvent()
116
124
  await self.ws.send_message(request)
117
125
 
@@ -36,6 +36,7 @@ class RustWebsocket:
36
36
  delay,
37
37
  on_success_args_kwargs,
38
38
  on_failure_args_kwargs,
39
+ debug: bool = False,
39
40
  ):
40
41
  self.connection: Union[WebSocketClientProtocol, None] = None
41
42
  self.task: Union[Task, None] = None
@@ -53,6 +54,7 @@ class RustWebsocket:
53
54
  self.delay = delay
54
55
  self.on_success_args_kwargs = on_success_args_kwargs
55
56
  self.on_failure_args_kwargs = on_failure_args_kwargs
57
+ self.debug = debug
56
58
 
57
59
  async def connect(
58
60
  self, retries=float("inf"), ignore_open_value: bool = False
@@ -83,6 +85,10 @@ class RustWebsocket:
83
85
  )
84
86
  )
85
87
  address += f"?v={str(self.magic_value)}"
88
+
89
+ if self.debug:
90
+ self.logger.info(f"[RustPlus.py] Connecting to {address}")
91
+
86
92
  self.connection = await connect(
87
93
  address,
88
94
  close_timeout=0,
@@ -108,8 +114,9 @@ class RustWebsocket:
108
114
  break
109
115
 
110
116
  except Exception as exception:
111
- print_error = True
117
+ self.logger.info(f"[RustPlus.py] {exception}")
112
118
 
119
+ print_error = True
113
120
  if not isinstance(exception, KeyboardInterrupt):
114
121
  # Run the failure callback
115
122
  if self.on_failure is not None:
@@ -154,6 +161,9 @@ class RustWebsocket:
154
161
  self.task = None
155
162
  self.connection_status = CLOSED
156
163
 
164
+ if self.debug:
165
+ self.logger.info(f"[RustPlus.py] Connection Closed")
166
+
157
167
  async def send_message(self, message: AppRequest) -> None:
158
168
  """
159
169
  Send the Protobuf to the server
@@ -214,6 +224,11 @@ class RustWebsocket:
214
224
  )
215
225
 
216
226
  async def handle_message(self, app_message: AppMessage) -> None:
227
+ if self.debug:
228
+ self.logger.info(
229
+ f"[RustPlus.py] Received Message with seq {app_message.response.seq}: {app_message}"
230
+ )
231
+
217
232
  if app_message.response.seq in self.remote.ignored_responses:
218
233
  self.remote.ignored_responses.remove(app_message.response.seq)
219
234
  return
@@ -225,12 +240,20 @@ class RustWebsocket:
225
240
  if prefix is not None:
226
241
  # This means it is a command
227
242
 
243
+ if self.debug:
244
+ self.logger.info(
245
+ f"[RustPlus.py] Attempting to run Command: {app_message}"
246
+ )
247
+
228
248
  message = RustChatMessage(app_message.broadcast.team_message.message)
229
249
  await self.remote.command_handler.run_command(message, prefix)
230
250
 
231
251
  if self.is_entity_broadcast(app_message):
232
252
  # This means that an entity has changed state
233
253
 
254
+ if self.debug:
255
+ self.logger.info(f"[RustPlus.py] Running Entity Event: {app_message}")
256
+
234
257
  await EventHandler.run_entity_event(
235
258
  app_message.broadcast.entity_changed.entity_id,
236
259
  app_message,
@@ -238,18 +261,27 @@ class RustWebsocket:
238
261
  )
239
262
 
240
263
  elif self.is_camera_broadcast(app_message):
264
+ if self.debug:
265
+ self.logger.info(f"[RustPlus.py] Running Camera Event: {app_message}")
266
+
241
267
  if self.remote.camera_manager is not None:
242
268
  await self.remote.camera_manager.add_packet(
243
269
  RayPacket(app_message.broadcast.camera_rays)
244
270
  )
245
271
 
246
272
  elif self.is_team_broadcast(app_message):
273
+ if self.debug:
274
+ self.logger.info(f"[RustPlus.py] Running Team Event: {app_message}")
275
+
247
276
  # This means that the team of the current player has changed
248
277
  await EventHandler.run_team_event(app_message, self.server_id)
249
278
 
250
279
  elif self.is_message(app_message):
251
280
  # This means that a message has been sent to the team chat
252
281
 
282
+ if self.debug:
283
+ self.logger.info(f"[RustPlus.py] Running Chat Event: {app_message}")
284
+
253
285
  steam_id = int(app_message.broadcast.team_message.message.steam_id)
254
286
  message = str(app_message.broadcast.team_message.message.message)
255
287
 
@@ -278,16 +310,22 @@ class RustWebsocket:
278
310
  else:
279
311
  self.outgoing_conversation_messages.remove(message)
280
312
 
281
- # Conversation API end
313
+ # Conversation API end
282
314
 
283
315
  await EventHandler.run_chat_event(app_message, self.server_id)
284
316
 
285
317
  else:
286
318
  # This means that it wasn't sent by the server and is a message from the server in response to an action
287
- event: YieldingEvent = self.remote.pending_response_events[
288
- app_message.response.seq
289
- ]
290
- event.set_with_value(app_message)
319
+ event: YieldingEvent = self.remote.pending_response_events.get(
320
+ app_message.response.seq, None
321
+ )
322
+ if event is not None:
323
+ if self.debug:
324
+ self.logger.info(
325
+ f"[RustPlus.py] Running Response Event: {app_message}"
326
+ )
327
+
328
+ event.set_with_value(app_message)
291
329
 
292
330
  def get_prefix(self, message: str) -> Optional[str]:
293
331
  if self.remote.use_commands:
@@ -54,6 +54,7 @@ class RustSocket(BaseRustSocket):
54
54
  use_test_server: bool = False,
55
55
  event_loop: asyncio.AbstractEventLoop = None,
56
56
  rate_limiter: RateLimiter = None,
57
+ debug: bool = False,
57
58
  ) -> None:
58
59
  super().__init__(
59
60
  ip=ip,
@@ -69,6 +70,7 @@ class RustSocket(BaseRustSocket):
69
70
  use_test_server=use_test_server,
70
71
  event_loop=event_loop,
71
72
  rate_limiter=rate_limiter,
73
+ debug=debug,
72
74
  )
73
75
 
74
76
  async def get_time(self) -> RustTime:
@@ -185,3 +185,6 @@ class RustMarker(Serializable):
185
185
  self._out_of_stock,
186
186
  )
187
187
  )
188
+
189
+ def __hash__(self) -> int:
190
+ return hash((self._id, self._type))
@@ -1,4 +1,5 @@
1
1
  import asyncio
2
+ import shlex
2
3
  from datetime import datetime
3
4
 
4
5
  from . import Command, CommandTime
@@ -22,7 +23,7 @@ class CommandHandler:
22
23
 
23
24
  async def run_command(self, message: RustChatMessage, prefix) -> None:
24
25
  if prefix == self.command_options.prefix:
25
- command = message.message.split(" ")[0][len(prefix) :]
26
+ command = shlex.split(message.message)[0][len(prefix) :]
26
27
  else:
27
28
  command = prefix
28
29
 
@@ -35,7 +36,7 @@ class CommandHandler:
35
36
  message.steam_id,
36
37
  CommandTime(datetime.utcfromtimestamp(message.time), message.time),
37
38
  command,
38
- message.message.split(" ")[1:],
39
+ shlex.split(message.message)[1:],
39
40
  )
40
41
  )
41
42
  else:
@@ -52,7 +53,7 @@ class CommandHandler:
52
53
  datetime.utcfromtimestamp(message.time), message.time
53
54
  ),
54
55
  command,
55
- message.message.split(" ")[1:],
56
+ shlex.split(message.message)[1:],
56
57
  ),
57
58
  )
58
59
  break
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rustplus
3
- Version: 5.6.14
3
+ Version: 5.6.16
4
4
  Summary: A python wrapper for the Rust Plus API
5
5
  Home-page: https://github.com/olijeffers0n/rustplus
6
6
  Author: olijeffers0n
@@ -18,6 +18,7 @@ Requires-Dist: requests
18
18
  Requires-Dist: numpy
19
19
  Requires-Dist: scipy
20
20
  Requires-Dist: betterproto==2.0.0b6
21
+ Requires-Dist: shlex
21
22
 
22
23
  ![Rust+.py](https://raw.githubusercontent.com/olijeffers0n/rustplus/master/icon.png)
23
24
  <div align = "center">
@@ -7,3 +7,4 @@ requests
7
7
  numpy
8
8
  scipy
9
9
  betterproto==2.0.0b6
10
+ shlex
File without changes
File without changes
File without changes
File without changes
File without changes