feat(Message|TextChannel): inline replies
This commit is contained in:
		
							parent
							
								
									8d4b8f5842
								
							
						
					
					
						commit
						86f82715ca
					
				
					 3 changed files with 31 additions and 21 deletions
				
			
		|  | @ -16,7 +16,6 @@ import { Embed } from './embed.ts' | ||||||
| import { CHANNEL_MESSAGE } from '../types/endpoint.ts' | import { CHANNEL_MESSAGE } from '../types/endpoint.ts' | ||||||
| import { MessageMentions } from './messageMentions.ts' | import { MessageMentions } from './messageMentions.ts' | ||||||
| import { TextChannel } from './textChannel.ts' | import { TextChannel } from './textChannel.ts' | ||||||
| import { DMChannel } from './dmChannel.ts' |  | ||||||
| import { Guild } from './guild.ts' | import { Guild } from './guild.ts' | ||||||
| 
 | 
 | ||||||
| type AllMessageOptions = MessageOption | Embed | type AllMessageOptions = MessageOption | Embed | ||||||
|  | @ -110,10 +109,9 @@ export class Message extends Base { | ||||||
|     return this.channel.editMessage(this.id, text, option)   |     return this.channel.editMessage(this.id, text, option)   | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   /** These will **not** work in all servers, as this feature is coming slowly. */ | ||||||
|   async reply(text?: string | AllMessageOptions, option?: AllMessageOptions): Promise<Message> { |   async reply(text?: string | AllMessageOptions, option?: AllMessageOptions): Promise<Message> { | ||||||
|     // TODO: Use inline replies once they're out
 |     return this.channel.send(text, Object.assign(option, { reply: this })) | ||||||
|     if (this.channel instanceof DMChannel) return this.channel.send(text, option) |  | ||||||
|     return this.channel.send(`${this.author.mention}, ${text}`, option) |  | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   async delete (): Promise<void> { |   async delete (): Promise<void> { | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { MessagesManager } from "../../mod.ts" | import { MessagesManager } from "../../mod.ts" | ||||||
| import { Client } from '../models/client.ts' | import { Client } from '../models/client.ts' | ||||||
| import { GuildTextChannelPayload, MessageOption, Overwrite, TextChannelPayload } from '../types/channel.ts' | import { GuildTextChannelPayload, MessageOption, MessageReference, Overwrite, TextChannelPayload } from '../types/channel.ts' | ||||||
| import { CHANNEL_MESSAGE, CHANNEL_MESSAGES } from '../types/endpoint.ts' | import { CHANNEL_MESSAGE, CHANNEL_MESSAGES } from '../types/endpoint.ts' | ||||||
| import { Channel } from './channel.ts' | import { Channel } from './channel.ts' | ||||||
| import { Embed } from './embed.ts' | import { Embed } from './embed.ts' | ||||||
|  | @ -39,13 +39,24 @@ export class TextChannel extends Channel { | ||||||
|       embed: option |       embed: option | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     const resp = await this.client.rest.post(CHANNEL_MESSAGES(this.id), { |     const payload: any = { | ||||||
|       content: text, |       content: text, | ||||||
|       embed: option?.embed, |       embed: option?.embed, | ||||||
|       file: option?.file, |       file: option?.file, | ||||||
|       tts: option?.tts, |       tts: option?.tts, | ||||||
|       allowed_mentions: option?.allowedMention |       allowed_mentions: option?.allowedMention | ||||||
|     }) |     } | ||||||
|  | 
 | ||||||
|  |     if (option?.reply !== undefined) { | ||||||
|  |       const reference: MessageReference = { | ||||||
|  |         message_id: option.reply.id, | ||||||
|  |         channel_id: option.reply.channel.id, | ||||||
|  |         guild_id: option.reply.guild?.id, | ||||||
|  |       } | ||||||
|  |       payload.message_reference = reference | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     const resp = await this.client.rest.post(CHANNEL_MESSAGES(this.id), payload) | ||||||
| 
 | 
 | ||||||
|     const res = new Message(this.client, resp, this, this.client.user as any) |     const res = new Message(this.client, resp, this, this.client.user as any) | ||||||
|     await res.mentions.fromPayload(resp) |     await res.mentions.fromPayload(resp) | ||||||
|  |  | ||||||
|  | @ -106,7 +106,8 @@ export interface MessageOption { | ||||||
|     parse: ['everyone', 'users', 'roles'] |     parse: ['everyone', 'users', 'roles'] | ||||||
|     roles: string[] |     roles: string[] | ||||||
|     users: string[] |     users: string[] | ||||||
|   } |   }, | ||||||
|  |   reply?: Message | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export interface ChannelMention { | export interface ChannelMention { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue