Browse Source

Start work on sending the voice messages (not working)

pull/10230/head
blord0 2 months ago
parent
commit
aa5c26fcac
  1. 59
      discord/http.py

59
discord/http.py

@ -53,7 +53,7 @@ import aiohttp
from .errors import HTTPException, RateLimited, Forbidden, NotFound, LoginFailure, DiscordServerError, GatewayNotFound from .errors import HTTPException, RateLimited, Forbidden, NotFound, LoginFailure, DiscordServerError, GatewayNotFound
from .gateway import DiscordClientWebSocketResponse from .gateway import DiscordClientWebSocketResponse
from .file import File from .file import File, VoiceMessageFile
from .mentions import AllowedMentions from .mentions import AllowedMentions
from . import __version__, utils from . import __version__, utils
from .utils import MISSING from .utils import MISSING
@ -243,7 +243,10 @@ def handle_message_parameters(
file_index = 0 file_index = 0
attachments_payload = [] attachments_payload = []
for attachment in attachments: for attachment in attachments:
if isinstance(attachment, File): if isinstance(attachment, VoiceMessageFile):
attachments_payload.append(attachment.to_dict(file_index))
file_index += 1
elif isinstance(attachment, File):
attachments_payload.append(attachment.to_dict(file_index)) attachments_payload.append(attachment.to_dict(file_index))
file_index += 1 file_index += 1
else: else:
@ -269,6 +272,9 @@ def handle_message_parameters(
multipart = [] multipart = []
if files: if files:
multipart.append({'name': 'payload_json', 'value': utils._to_json(payload)}) multipart.append({'name': 'payload_json', 'value': utils._to_json(payload)})
print(";;;;")
print(utils._to_json(payload))
print(";;;;")
payload = None payload = None
for index, file in enumerate(files): for index, file in enumerate(files):
multipart.append( multipart.append(
@ -617,7 +623,9 @@ class HTTPClient:
headers['X-Audit-Log-Reason'] = _uriquote(reason, safe='/ ') headers['X-Audit-Log-Reason'] = _uriquote(reason, safe='/ ')
kwargs['headers'] = headers kwargs['headers'] = headers
print("=-=-=-=-=-=-=-=-=-=-=-=")
print(headers)
print("=-=-=-=-=-=-=-=-=-=-=-=")
# Proxy support # Proxy support
if self.proxy is not None: if self.proxy is not None:
kwargs['proxy'] = self.proxy kwargs['proxy'] = self.proxy
@ -868,6 +876,10 @@ class HTTPClient:
*, *,
params: MultipartParameters, params: MultipartParameters,
) -> Response[message.Message]: ) -> Response[message.Message]:
print(":::::")
print(params.payload)
print(params.multipart)
print(":::::")
r = Route('POST', '/channels/{channel_id}/messages', channel_id=channel_id) r = Route('POST', '/channels/{channel_id}/messages', channel_id=channel_id)
if params.files: if params.files:
return self.request(r, files=params.files, form=params.multipart) return self.request(r, files=params.files, form=params.multipart)
@ -1058,6 +1070,47 @@ class HTTPClient:
def pins_from(self, channel_id: Snowflake) -> Response[List[message.Message]]: def pins_from(self, channel_id: Snowflake) -> Response[List[message.Message]]:
return self.request(Route('GET', '/channels/{channel_id}/pins', channel_id=channel_id)) 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`.
"""
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,
}]
}
response = await self.request(uploadRoute, json=payload)
upload_data = response['attachments'][0]
upload_url = upload_data["upload_url"]
uploaded_filename = upload_data["upload_filename"]
x: Optional[aiohttp.ClientResponse] = None
x = await self.__session.request("PUT", upload_url, headers={"Content-Type": "audio/ogg"}, data=VoiceMessage.fp.read())
print("*********")
print(upload_url)
print(x.read())
print("*********")
VoiceMessage.uploaded_filename = uploaded_filename
r = Route('POST', '/channels/{channel_id}/messages', channel_id=channel_id)
params = handle_message_parameters(file=VoiceMessage, flags=MessageFlags(voice=True))
return await self.request(r, files=params.files, form=params.multipart)
# Member management # Member management
def kick(self, user_id: Snowflake, guild_id: Snowflake, reason: Optional[str] = None) -> Response[None]: def kick(self, user_id: Snowflake, guild_id: Snowflake, reason: Optional[str] = None) -> Response[None]:

Loading…
Cancel
Save