✨ [Guild] channels
This commit is contained in:
		
							parent
							
								
									91e52d10b4
								
							
						
					
					
						commit
						008f2615e6
					
				
							
								
								
									
										51
									
								
								src/routes/api/v8/guilds/#id/channels.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								src/routes/api/v8/guilds/#id/channels.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,51 @@ | ||||
| import { Router } from "express"; | ||||
| import { ChannelModel, ChannelType, GuildModel, Snowflake } from "fosscord-server-util"; | ||||
| import { HTTPError } from "lambert-server"; | ||||
| import { ChannelModifySchema } from "../../../../../schema/Channel"; | ||||
| import { check } from "../../../../../util/instanceOf"; | ||||
| const router = Router(); | ||||
| 
 | ||||
| router.get("/", async (req, res) => { | ||||
| 	const guild_id = BigInt(req.params.id); | ||||
| 	const channels = await ChannelModel.find({ guild_id }).exec(); | ||||
| 
 | ||||
| 	res.json(channels); | ||||
| }); | ||||
| 
 | ||||
| router.post("/", check(ChannelModifySchema), async (req, res) => { | ||||
| 	const guild_id = BigInt(req.params.id); | ||||
| 	const body = req.body as ChannelModifySchema; | ||||
| 	if (!body.permission_overwrites) body.permission_overwrites = []; | ||||
| 	if (!body.topic) body.topic = ""; | ||||
| 	if (!body.rate_limit_per_user) body.rate_limit_per_user = 0; | ||||
| 	switch (body.type) { | ||||
| 		case ChannelType.DM: | ||||
| 		case ChannelType.GROUP_DM: | ||||
| 			throw new HTTPError("You can't create a dm channel in a guild"); | ||||
| 		// TODO:
 | ||||
| 		case ChannelType.GUILD_STORE: | ||||
| 			throw new HTTPError("Not yet supported"); | ||||
| 		case ChannelType.GUILD_NEWS: | ||||
| 		// TODO: check if guild is community server
 | ||||
| 	} | ||||
| 
 | ||||
| 	if (body.parent_id) { | ||||
| 		const exists = ChannelModel.findOne({ channel_id: body.parent_id }).exec(); | ||||
| 		if (!exists) throw new HTTPError("Parent id channel doesn't exist", 400); | ||||
| 	} | ||||
| 
 | ||||
| 	const guild = await GuildModel.findOne({ id: guild_id }, { id: true }).exec(); | ||||
| 	if (!guild) throw new HTTPError("Guild not found", 4040); | ||||
| 
 | ||||
| 	const channel = { | ||||
| 		...body, | ||||
| 		id: Snowflake.generate(), | ||||
| 		created_at: new Date(), | ||||
| 		guild_id, | ||||
| 	}; | ||||
| 	await new ChannelModel(channel).save(); | ||||
| 
 | ||||
| 	res.json(channel); | ||||
| }); | ||||
| 
 | ||||
| export default router; | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Flam3rboy
						Flam3rboy