Concord - C Discord API library
A Discord API wrapper library written in C
message_components.h
Go to the documentation of this file.
1
6#ifndef API_MESSAGE_COMPONENTS_H
7#define API_MESSAGE_COMPONENTS_H
8/* Allow symbols usage without GENCODECS_ prefix */
9#include <stddef.h>
10#include <stdbool.h>
11#include <inttypes.h>
12#include "carray.h"
13#include "cog-utils.h"
14#include "types.h"
15/* Custom JSON encoding macros */
16/* Custom JSON decoding macros */
17/* Custom field macros */
18/* if GENCODECS_READ is not specified then generate for all files */
19/*****************************************************************************
20 * Message Components Datatypes
21 * **************************************************************************/
79};
81 /* button styles */
92 /* text styles */
97};
109
113
115 char * custom_id;
119
123
125 char * label;
129
131 char * url;
135
142
146
150
158 char * value;
162
169
176
182 char * content;
183
190
202
209
216
227 int color;
228
229};
232 struct discord_component *array; int realsize; };
236 char * label;
238 char * value;
244
247};
250 struct discord_select_option *array; int realsize; };
254 char * url;
255};
260
264
267};
270 struct discord_component_item *array; int realsize; };
272#include <stddef.h>
273#include <stdbool.h>
274#define JSMN_STRICT
275#define JSMN_HEADER
276#include "jsmn.h"
277#include "jsmn-find.h"
278#define JSONB_HEADER
279#include "json-build.h"
280#include <inttypes.h>
281#include "carray.h"
282#include "cog-utils.h"
283#include "types.h"
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
382
383
384
385
386
387
388
389
390
391
392
394
395
396
397
398
399
400
401
402
403
404
405
406
407
409
410
411long discord_component_from_jsmnf(jsmnf_pair *root, const char *js, struct discord_component *self); size_t discord_component_from_json(const char buf[], size_t size, struct discord_component *self);
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477long discord_components_from_jsmnf(jsmnf_pair *root, const char *js, struct discord_components *self); size_t discord_components_from_json(const char buf[], size_t size, struct discord_components *self);
478
479
480
481
482
483
484
485
486
487
488
489long discord_select_options_from_jsmnf(jsmnf_pair *root, const char *js, struct discord_select_options *self); size_t discord_select_options_from_json(const char buf[], size_t size, struct discord_select_options *self);
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504long discord_component_items_from_jsmnf(jsmnf_pair *root, const char *js, struct discord_component_items *self); size_t discord_component_items_from_json(const char buf[], size_t size, struct discord_component_items *self);
505
506
507jsonbcode discord_component_to_jsonb(jsonb *b, char buf[], size_t size, const struct discord_component *self); size_t discord_component_to_json(char buf[], size_t size, const struct discord_component *self);
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573jsonbcode discord_components_to_jsonb(jsonb *b, char buf[], size_t size, const struct discord_components *self); size_t discord_components_to_json(char buf[], size_t size, const struct discord_components *self);
574
575
576
577
578
579
580
581
582
583
584
585jsonbcode discord_select_options_to_jsonb(jsonb *b, char buf[], size_t size, const struct discord_select_options *self); size_t discord_select_options_to_json(char buf[], size_t size, const struct discord_select_options *self);
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600jsonbcode discord_component_items_to_jsonb(jsonb *b, char buf[], size_t size, const struct discord_component_items *self); size_t discord_component_items_to_json(char buf[], size_t size, const struct discord_component_items *self);
601
602
603#endif /* API_MESSAGE_COMPONENTS_H */
uint64_t u64snowflake
Snowflake datatype.
Definition: types.h:28
jsonbcode
json-builder return codes
Definition: json-build.h:34
jsonbcode discord_component_to_jsonb(jsonb *b, char buf[], size_t size, const struct discord_component *self)
size_t discord_select_options_from_json(const char buf[], size_t size, struct discord_select_options *self)
void discord_component_items_cleanup(struct discord_component_items *self)
size_t discord_select_options_to_json(char buf[], size_t size, const struct discord_select_options *self)
size_t discord_component_items_from_json(const char buf[], size_t size, struct discord_component_items *self)
jsonbcode discord_component_items_to_jsonb(jsonb *b, char buf[], size_t size, const struct discord_component_items *self)
size_t discord_component_items_to_json(char buf[], size_t size, const struct discord_component_items *self)
long discord_component_items_from_jsmnf(jsmnf_pair *root, const char *js, struct discord_component_items *self)
void discord_component_cleanup(struct discord_component *self)
discord_component_styles
Definition: message_components.h:80
@ DISCORD_BUTTON_SECONDARY
Definition: message_components.h:85
@ DISCORD_TEXT_PARAGRAPH
Definition: message_components.h:96
@ DISCORD_BUTTON_LINK
Definition: message_components.h:91
@ DISCORD_BUTTON_DANGER
Definition: message_components.h:89
@ DISCORD_TEXT_SHORT
Definition: message_components.h:94
@ DISCORD_BUTTON_SUCCESS
Definition: message_components.h:87
@ DISCORD_BUTTON_PRIMARY
Definition: message_components.h:83
size_t discord_components_from_json(const char buf[], size_t size, struct discord_components *self)
size_t discord_component_from_json(const char buf[], size_t size, struct discord_component *self)
size_t discord_component_to_json(char buf[], size_t size, const struct discord_component *self)
long discord_select_options_from_jsmnf(jsmnf_pair *root, const char *js, struct discord_select_options *self)
jsonbcode discord_select_options_to_jsonb(jsonb *b, char buf[], size_t size, const struct discord_select_options *self)
void discord_component_init(struct discord_component *self)
void discord_select_options_cleanup(struct discord_select_options *self)
discord_component_types
Definition: message_components.h:22
@ DISCORD_COMPONENT_CONTAINER
Definition: message_components.h:78
@ DISCORD_COMPONENT_BUTTON
Definition: message_components.h:26
@ DISCORD_COMPONENT_MENTION_SELECT
Definition: message_components.h:36
@ DISCORD_COMPONENT_SECTION
Definition: message_components.h:43
@ DISCORD_COMPONENT_TEXT_DISPLAY
Definition: message_components.h:48
@ DISCORD_COMPONENT_THUMBNAIL
Definition: message_components.h:53
@ DISCORD_COMPONENT_ACTION_ROW
Definition: message_components.h:24
@ DISCORD_COMPONENT_CHANNEL_SELECT
Definition: message_components.h:38
@ DISCORD_COMPONENT_CONTENT_INVENTORY_ENTRY
Definition: message_components.h:73
@ DISCORD_COMPONENT_FILE
Definition: message_components.h:63
@ DISCORD_COMPONENT_MEDIA_GALLERY
Definition: message_components.h:58
@ DISCORD_COMPONENT_USER_SELECT
Definition: message_components.h:32
@ DISCORD_COMPONENT_SELECT_MENU
Definition: message_components.h:28
@ DISCORD_COMPONENT_ROLE_SELECT
Definition: message_components.h:34
@ DISCORD_COMPONENT_SEPARATOR
Definition: message_components.h:68
@ DISCORD_COMPONENT_TEXT_INPUT
Definition: message_components.h:30
void discord_components_cleanup(struct discord_components *self)
jsonbcode discord_components_to_jsonb(jsonb *b, char buf[], size_t size, const struct discord_components *self)
long discord_components_from_jsmnf(jsmnf_pair *root, const char *js, struct discord_components *self)
long discord_component_from_jsmnf(jsmnf_pair *root, const char *js, struct discord_component *self)
size_t discord_components_to_json(char buf[], size_t size, const struct discord_components *self)
discord_component_spacing
Definition: message_components.h:98
@ DISCORD_COMPONENT_SPACING_LARGE
Definition: message_components.h:102
@ DISCORD_COMPONENT_SPACING_SMALL
Definition: message_components.h:100
Definition: message_components.h:256
bool spoiler
Definition: message_components.h:266
char * description
Definition: message_components.h:263
struct discord_component_media * media
Definition: message_components.h:259
Definition: message_components.h:269
struct discord_component_item * array
Definition: message_components.h:270
int size
Definition: message_components.h:269
Definition: message_components.h:252
char * url
Definition: message_components.h:254
Definition: message_components.h:105
char * value
Definition: message_components.h:158
struct discord_components * components
Definition: message_components.h:149
struct discord_component_media * file
Definition: message_components.h:208
int max_length
Definition: message_components.h:154
u64snowflake id
Definition: message_components.h:108
enum discord_component_types type
Definition: message_components.h:112
u64snowflake sku_id
Definition: message_components.h:118
struct discord_component * accessory
Definition: message_components.h:168
struct discord_component_items * items
Definition: message_components.h:201
int max_values
Definition: message_components.h:145
enum discord_component_spacing spacing
Definition: message_components.h:221
struct discord_select_options * options
Definition: message_components.h:134
struct discord_emoji * emoji
Definition: message_components.h:128
bool divider
Definition: message_components.h:215
bool required
Definition: message_components.h:156
char * label
Definition: message_components.h:125
char * description
Definition: message_components.h:189
int color
Definition: message_components.h:227
struct discord_component_media * media
Definition: message_components.h:175
char * custom_id
Definition: message_components.h:115
enum discord_component_styles style
Definition: message_components.h:122
bool spoiler
Definition: message_components.h:195
char * placeholder
Definition: message_components.h:137
int min_values
Definition: message_components.h:141
bool disabled
Definition: message_components.h:161
char * url
Definition: message_components.h:131
int min_length
Definition: message_components.h:152
char * content
Definition: message_components.h:182
Definition: message_components.h:231
struct discord_component * array
Definition: message_components.h:232
int size
Definition: message_components.h:231
Definition: emoji.h:23
Definition: message_components.h:234
bool Default
Definition: message_components.h:246
char * description
Definition: message_components.h:240
char * label
Definition: message_components.h:236
struct discord_emoji * emoji
Definition: message_components.h:243
char * value
Definition: message_components.h:238
Definition: message_components.h:249
struct discord_select_option * array
Definition: message_components.h:250
int size
Definition: message_components.h:249
Handle for building a JSON string.
Definition: json-build.h:61