diff --git a/discord/abc.py b/discord/abc.py index 4720a42fc..52e3b8e58 100644 --- a/discord/abc.py +++ b/discord/abc.py @@ -1941,6 +1941,7 @@ class Messageable: data = await self._state.http.send_voice_message(channel.id, file) return self._state.create_message(channel=channel, data=data) + class Connectable(Protocol): """An ABC that details the common operations on a channel that can connect to a voice server. diff --git a/discord/file.py b/discord/file.py index 86eb98bcf..df4aa4223 100644 --- a/discord/file.py +++ b/discord/file.py @@ -179,7 +179,7 @@ class VoiceMessageFile(File): self.duration = duration self._waveform = waveform self.uploaded_filename = None - + def to_dict(self, index: int) -> Dict[str, Any]: payload = super().to_dict(index) payload['duration_secs'] = self.duration @@ -194,6 +194,6 @@ class VoiceMessageFile(File): if self._waveform is None: return base64.b64encode(os.urandom(256)).decode('utf-8') return self._waveform - + def size(self): - return 47194 # Placeholder, figure out how to get size \ No newline at end of file + return 47194 # Placeholder, figure out how to get size diff --git a/discord/http.py b/discord/http.py index 78433c0ff..9467a6329 100644 --- a/discord/http.py +++ b/discord/http.py @@ -243,10 +243,7 @@ def handle_message_parameters( file_index = 0 attachments_payload = [] for attachment in attachments: - if isinstance(attachment, VoiceMessageFile): - attachments_payload.append(attachment.to_dict(file_index)) - file_index += 1 - elif isinstance(attachment, File): + if isinstance(attachment, File): attachments_payload.append(attachment.to_dict(file_index)) file_index += 1 else: @@ -272,9 +269,6 @@ def handle_message_parameters( multipart = [] if files: multipart.append({'name': 'payload_json', 'value': utils._to_json(payload)}) - print(";;;;") - print(utils._to_json(payload)) - print(";;;;") payload = None for index, file in enumerate(files): multipart.append( @@ -876,10 +870,6 @@ class HTTPClient: *, params: MultipartParameters, ) -> Response[message.Message]: - print(":::::") - print(params.payload) - print(params.multipart) - print(":::::") r = Route('POST', '/channels/{channel_id}/messages', channel_id=channel_id) if params.files: return self.request(r, files=params.files, form=params.multipart) @@ -1070,26 +1060,18 @@ class HTTPClient: def pins_from(self, channel_id: Snowflake) -> Response[List[message.Message]]: return self.request(Route('GET', '/channels/{channel_id}/pins', channel_id=channel_id)) - async def send_voice_message(self, channel_id: Snowflake, VoiceMessage: VoiceMessageFile): - """|coro| - - Sends a voice message to the specified channel. - - Parameters - ----------- - channel_id: :class:`~discord.abc.Snowflake` - The ID of the channel to send the voice message to. - VoiceMessage: :class:`~discord.VoiceMessageFile` - The voice message file to send. This should be an instance of :class:`~discord.VoiceMessageFile`. - """ + async def send_voice_message(self, channel_id: Snowflake, voice_message: VoiceMessageFile): from .message import MessageFlags + uploadRoute = Route('POST', '/channels/{channel_id}/attachments', channel_id=channel_id) payload = { - "files": [{ - "filename": "voice-message.ogg", - "file_size": VoiceMessage.size(), - "id": 0, - }] + "files": [ + { + "filename": "voice-message.ogg", + "file_size": voice_message.size(), + "id": 0, + } + ] } response = await self.request(uploadRoute, json=payload) @@ -1099,34 +1081,32 @@ class HTTPClient: import requests - t = requests.put(upload_url, headers={"Content-Type": "audio/ogg"}, data=VoiceMessage.fp) + t = requests.put(upload_url, headers={"Content-Type": "audio/ogg"}, data=voice_message.fp) print(f"Status code: {t.status_code}") - # x = await self.__session.request("PUT", upload_url, headers={"Content-Type": "audio/ogg"}, data=VoiceMessage.fp) + # x = await self.__session.request("PUT", upload_url, headers={"Content-Type": "audio/ogg"}, data=voice_message.fp) # print("*********") # print(upload_url) # print(x.read()) # print("*********") - VoiceMessage.uploaded_filename = uploaded_filename + voice_message.uploaded_filename = uploaded_filename r = Route('POST', '/channels/{channel_id}/messages', channel_id=channel_id) message_payload = { "flags": 8192, # IS_VOICE_MESSAGE - "attachments": [VoiceMessage.to_dict(0)], + "attachments": [voice_message.to_dict(0)], } - headers = {"Authorization": f"Bot {self.token}", - "Content-Type": "application/json"} + headers = {"Authorization": f"Bot {self.token}", "Content-Type": "application/json"} res = requests.post("" + r.url, headers=headers, json=message_payload) return res.json() - # params = handle_message_parameters(file=VoiceMessage, flags=MessageFlags(voice=True)) + # params = handle_message_parameters(file=voice_message, flags=MessageFlags(voice=True)) # return await self.request(r, files=params.files, form=params.multipart) - # Member management def kick(self, user_id: Snowflake, guild_id: Snowflake, reason: Optional[str] = None) -> Response[None]: