Commit graph

346 commits

Author SHA1 Message Date
Carson Hoffman
e6a8d51c9b
Add JSON tags to Activity struct 2021-01-26 13:24:24 -05:00
Carson Hoffman
90531dc713
Fix permissions type for UserGuild 2021-01-20 20:19:51 -05:00
Carson Hoffman
bd34c3c66d
Add comment for UnmarshalJSON 2021-01-20 19:43:00 -05:00
Carson Hoffman
c41dc15a10
Add changes to presences, remove Game type 2021-01-20 18:54:38 -05:00
Carson Hoffman
866ecccb2e
Support millisecond precision in rate limits 2021-01-20 18:39:43 -05:00
Carson Hoffman
daaafb5a7f
Rename fields for v8 2021-01-20 18:22:39 -05:00
Carson Hoffman
167b649902
Remove support for optional intents 2021-01-20 18:18:34 -05:00
Carson Hoffman
3773e286e6
Add v8 permissions changes 2021-01-20 18:11:20 -05:00
CinePlays
de64206da6 Added missing field in member struct 2021-01-06 22:40:00 +01:00
Fedor Lapshin
f124f38563
GuildBan method and UnknownBan error code addition (#848)
* UnknownBan error code addition

* GuildBan method implementation

* Gofmt fix

Gofmt fix
2020-12-17 13:59:41 -05:00
Qais Patankar
0dbc0d17a7 Add ApplicationID to Webhook 2020-11-15 19:40:37 +00:00
Samuel Hunter
8c5ca3de95
Add banner to GuildParams struct (#735) 2020-08-25 10:42:45 -04:00
Aditya Diwakar
8648632fc8 Comment ChannelFollow struct 2020-08-05 19:02:11 -04:00
Aditya Diwakar
eb70c17733 Add support for retrieving Webhook ID 2020-08-05 18:54:12 -04:00
redbluescreen
ea94122b57
Add AllowedMentions field to WebhookParams 2020-07-23 19:11:21 +03:00
Robbie Trencheny
f067059526
Update Emoji struct 2020-06-28 16:01:20 -07:00
TroyDota
9ce4a230c8
Updates API (#785)
* Update to API

Updates the golang stuct to current api documentation and adds new util

* Revert of change.

* Update message.go

* Update structs.go

* Yikes this my hand hurts.

* Consistency

* Update message.go
2020-06-28 18:53:46 -04:00
Carson Hoffman
bfbd4bc5c3
Merge pull request #763 from lukasz-horonziak/intents
Basic support for Gateway Intents
2020-06-16 23:06:07 -04:00
Łukasz Horonziak
ee7a5ae519 Add missing comments 2020-06-11 12:26:34 +02:00
Łukasz Horonziak
0e6ec53738 Move MakeIntent method 2020-05-24 09:44:33 +02:00
Łukasz Horonziak
de7803becd Refactor 2020-05-24 08:34:29 +02:00
Łukasz Horonziak
57c962912e Make intents optional field 2020-05-17 19:52:52 +02:00
Noah Santschi-Cooney
69edfdf4ac
discordapp.com -> discord.com (#772)
Change API URL from discordapp.com to discord.com
2020-05-08 21:26:13 -04:00
Łukasz Horonziak
d12e6550c6 Typos 2020-04-19 17:36:35 +02:00
Łukasz Horonziak
349da37386 Refactor 2020-04-19 11:11:41 +02:00
Łukasz Horonziak
757302eb78 Add intents 2020-04-18 22:31:38 +02:00
Eric Wohltman
3736887e9b
Bitwise view channel permission (#758)
* Fix offset for PermissionViewChannel

* Fix offset for PermissionViewChannel
2020-04-06 11:00:23 -07:00
Eric Wohltman
0a159acc0c
Fix offset for PermissionViewChannel (#757) 2020-04-06 09:50:24 -07:00
Eric Wohltman
e66f73bf50 Update compound permission sets to use PermissionViewChannel 2020-04-01 10:05:24 -04:00
Eric Wohltman
e83cac31da Add PermissionReadMessages deprecated comment 2020-04-01 10:00:26 -04:00
Eric Wohltman
e26e635684 Add bitwise permission const PermissionViewChannel 2020-04-01 08:04:42 -04:00
bwmarrin
d4610f32c1
Merge pull request #728 from bwmarrin/feature-ExposeIdentify
Expose Identify Packet
2020-01-24 17:20:51 -06:00
Bruce Marriner
19c4a067d0 Fixing Nits 2020-01-23 09:33:36 -06:00
Helba
949945a955 Added Missing CustomStatus type, and Missing Slice for Activities which gets returned now because custom triggers a presnece update 2020-01-22 14:52:56 -08:00
Helba
c737258c06 Added missing features 2020-01-22 14:50:38 -08:00
Bruce Marriner
69f369a9f4 Linting. 2020-01-20 12:20:30 -06:00
Bruce Marriner
eff98faf41 Fix wording 2020-01-20 12:10:20 -06:00
Bruce Marriner
ee9178e237 Fix wording 2020-01-20 12:06:54 -06:00
Bruce Marriner
973580a2ba Initial commit of ExposeIdentify feature 2020-01-20 12:01:58 -06:00
Carson Hoffman
afe392e6c1
Merge pull request #694 from BigHeadGeorge/fix-tts-casing
Fix inconsistent TTS casing
2019-12-26 20:22:41 -05:00
Bruce Marriner
8416350234 Merge branch 'master' of https://github.com/bwmarrin/discordgo 2019-10-18 10:46:55 -05:00
Sebastian Winkler
4ffe741f3e
adds RateLimitPerUser to Channel struct 2019-10-01 20:32:18 +02:00
Haze Booth
97726fe5b6
Fix typo in ErrorEmbedDisabled 2019-09-28 03:34:22 -04:00
tuckerrrrrrrrrrrr
bc6197c5e6 fix inconsistent tts casing 2019-09-10 18:09:24 -07:00
JurrijnP
b8638c0363
Add Channel Types 2019-08-04 10:44:25 +02:00
Julian Y
8713b45ae7
Create new VerificationLevel VerificationLevelVeryHigh
Closes #677
2019-08-03 23:48:24 -07:00
Christopher F
66f4df19c8 faeture: add last_pin_timestamp to Channel struct (#596)
This resolves #547.

Adds a "LastPinTimestamp" field to the Channel structure, which reflects
the `last_pin_timestamp` field on the Discord API. This field is
indicative of whether or not the channel has any pinned messages, and
can save an API request from being sent if there are none.

FWIW, The API doesn't seem to return a 404 anymore when there are no
pinned messages; it returns a 200 with `[]`.
2019-07-21 21:12:21 -07:00
Sebastian Winkler
579121fe1a adds EndpointGuildIconAnimated; adds guild.IconURL() helper (#658) 2019-07-21 21:09:39 -07:00
recapitalverb
d19be02e42 Add Available field to Emoji struct (#676) 2019-07-21 21:02:28 -07:00
Sebastian Winkler
347a4f69b0 Add premium fields to Guild and Member (#656)
* adds premium fields to Guild and Member

* fixes formatting
2019-06-08 13:54:39 -07:00
diamond's alt
7896167153 added useragent (#653) 2019-05-28 16:52:23 -07:00
JurrijnP
c5ae321187 Add "Priority Speaker" permission as constant (#628)
* Bump to v0.17.0

* Add members from GuildMembersChunk to state (#454)

* Revert "Add members from GuildMembersChunk to state (#454)" (#455)

This reverts commit e4487b30d4.

* added clarification when initializing discordgo

from the code I ran on my system with the latest changes this seems to be the syntax for the authentication tokens. I'm guessing it was just never updated.
Let me know if this is incorrect. 
Thanks!

* travis: update go versions

* Add "Priority Speaker" permission constant

The permission "Priority Speaker" was missing as constant. Permission has been added as constant and to the "PermissionAllVoice" constant as well.
2019-02-05 12:41:52 -08:00
Connor Wright
c8554477e4 Add HeartbeatLatency method (#593)
* Latency method

* fixed typo

* fixed linter error

* Renamed Latency to HeartbeatLatency

* HeartbeatLatency now returns time.Time

* return time.Duration instead, since .Sub() returns that

* Add full-stops to end of comments
2018-09-26 13:22:21 -07:00
Sebastian Winkler
6d2c944ad6 adds rate_limit_per_user to ChannelEdit (#585) 2018-09-20 12:38:28 -07:00
Necroforger
27581e260f Add PermissionManageWebhooks and PermissionManageEmojis to PermissionAll (#580) 2018-08-30 17:08:21 -07:00
Skippy
56e4d6a57b
Merge pull request #562 from Necroforger/member_mention
Add Member.Mention
2018-08-22 19:56:39 -05:00
Skippy
25b80afaab
Merge pull request #570 from pixelrazor/develop
Changed Member.JoinedAt to type Timestamp
2018-08-22 19:43:43 -05:00
Qais Patankar
34307e9a0b Add ErrCodeUnknownWebhook (#573) 2018-08-18 09:10:18 -07:00
Unknown
9c1fd5d8a9 Changed Member.JoinedAt to type Timestamp
It was previously just string, but has been updated to be consistent with the other structs.
2018-07-31 15:32:29 -05:00
Rens Rikkerink
1593c55523 Added .MessageFormat() to emoji struct (#569)
* Added .ChatName() to emoji struct

* Renamed ChatName to MessageFormat

* Fix lint
2018-07-31 11:36:58 -07:00
necro
e5c968d7a6 Add Member.Mention 2018-06-23 16:06:45 -04:00
Cory Ory
e28d444422 Add userlimit to the channel struct (#557) 2018-06-06 18:20:03 -07:00
Sebastian Winkler
9aae26445f
adds InviteWithCounts 2018-05-23 16:27:14 +02:00
Dim
82c8cf21b2 Add GuildID to multiple structs (#541) 2018-05-02 17:07:23 -07:00
Rens Rikkerink
22ec91f6cf Added Mention() func for Channel (#536)
* Added Mention() func for Channel

* Changed variable name

Adding the func in Github was so simple I didn't bother seeing if it'd compile, I shortly after realised my mistake.
2018-04-19 08:41:00 -07:00
tsudoko
aad0e0b32a Add Icon channel field (#531) 2018-04-09 20:26:23 -07:00
Sebastian Winkler
dd26841a4f
adds missing fields to guild struct 2018-04-03 16:55:56 +02:00
Carson Hoffman
964060f34c General documentation improvements 2018-03-14 14:57:40 -04:00
Necroforger
1ff9565306 Added UserConnections function and structs (#514)
* Added UserConnections function and structs

* Rename Connection to UserConnection

* Embed Integrations inside GuildIntegration and remove GuildIntegrationAccount

* Replaced GuildIntegration with Integration
2018-03-07 15:45:09 -08:00
Carson Hoffman
5765bb7804 Added Role.Mention function 2018-01-28 20:02:52 -05:00
Eric Wohltman
8591961512 Small update to supported Game Activity Types (#500) 2018-01-11 16:48:25 -08:00
Sebastian Winkler
18dfe540ad adds GuildAuditLog() (#504)
* adds GuildAuditLogs()

* adds missing comments to GuildAuditLog
2018-01-11 07:09:12 -08:00
Sebastian Winkler
e6ed3d579b adds support for animated emojis (#496) 2017-12-22 08:35:44 -08:00
psheets
e024d5f032 Add ChannelEditComplex (#493)
* Add ChannelEditComplex

* Fixed comment format

* gofmt

* Reverted permissions and fixed ChannelEditComplex

* Reverted Perms

* Delete discordgo - Shortcut.lnk

removed link

* Added ChannelID param to ChannelEditComplex

* gofmt
2017-12-14 21:59:07 -08:00
Sebastian Winkler
3c792b297c
adds unique field to invite struct 2017-12-03 09:38:01 +01:00
vim2meta
0e42acc5f5
Update structs.go 2017-11-19 10:13:54 -05:00
Lukas Breuer
a838552b22
Remove XKCDPass Invites
This feature has been removed from the API quite some time ago.
2017-11-11 18:40:05 +01:00
Nicholas Hanley
43bf6cf0d0 Fix TimeStamps unmarshalling (#474) (#475) 2017-11-08 18:39:26 -08:00
Bruce Marriner
8c52d97c1e Linting. 2017-11-08 19:54:04 +00:00
Cory Ory
8737777ce7 Implement Raw sending of status (Rich Presence and Online Status) (#462)
* Added ability to change the online status

* Add structs for rick presence implementation

* Refractor and publicise UpdateStatusData

* Add UpdateStatusComplex for raw status data sending

* Case gameType to int, stopped it compiling

* Might want to gofmt.

Doesn't do it on save because Gogland removed it and their new thing I
can't make sense of.

* Revert "Added ability to change the online status"

This reverts commit 235cd15a8eebbec070cb95a5853295387bceae1c.

* Change gametypeto match

* Move RLock to UpdateStatusComplex
2017-10-22 14:08:08 -07:00
Erik McClure
97a510ca0a Add rate limit buffering support (#430)
* Fix #406: reconnect() can be called while still connected

* Add memberMap to speed up member queries

* Fix error return value and remove deletion

* Fix GuildAdd member map initialization edge case

* Add rate limit buffering support

- Break request into requestInner
- Break LockBucket into LockBucketObject
- Change getBucket to GetBucket so it can be externally accessed
- Add RequestBuffer interface
- Add RequestBuffer pointer to Bucket struct
- Add RequestPostWithBuffer() function to Session

* Remove internal implementation, export ratelimiter instead
2017-10-07 10:54:46 -07:00
jD91mZM2
9da2c9e76a Added GameType (#435)
* Added GameType

* Delete useless function
2017-10-07 10:54:04 -07:00
Sebastian Winkler
7b6a91ac04 adds parent_id to channel struct (#448) 2017-09-22 07:42:59 -07:00
robbix1206
24dcabd55d Fix #443 2017-09-21 00:32:49 +02:00
Bruce
06b35cfe24 Linting. 2017-09-03 20:01:46 +00:00
Jonas is my name
308d058bf1 Fix presence update after breaking API change (#427) 2017-08-17 06:55:02 -07:00
tsudoko
55d995899e Add NSFW channel field (#419) 2017-07-31 16:48:29 -07:00
Jonas is my name
ba1095f3e1 Add error code constants (#418)
* Add error code constants

* Woops forgot a space
2017-07-30 19:10:41 -07:00
Jonas is my name
b4faca0f46 Add option for calling event handlers sync or async (#416)
* Add option for calling event handlers sync or async

* Small doc update
2017-07-29 17:32:20 -07:00
legolord208
7bb0965a6f Updated to v6 (fixes #408) (#410)
* Updated to v6

* Unified websocket and REST version
2017-07-22 06:17:39 -07:00
jonas747
9d3cd03314 Add GatewayBot 2017-07-10 18:31:26 +02:00
Erik McClure
bb4b96e26d Add heartbeat ACK response and error handling (#396)
* Add heartbeat ACK response and error handling

- Error when sending a heartbeat now triggers a reconnection
- Op7 now triggers a reconnection
- Session now tracks the last heartbeat ACK that was recieved. If the
last ACK is more than FailedHeartbeatAcks*heartbeatinterval in the past,
this is treated as a dead connection and a reconnection is forced.

* Address @iopred comments
2017-06-27 20:52:59 -07:00
AAAAAAAAAAA
eed1d20f1a Fix presence unmarshal with game names as numbers (#381)
* Game name is also not validated on the server

* Use json.Number instead
2017-05-08 08:32:00 -07:00
legolord208
25c8012990 Added missing permission constants (#378) 2017-05-08 06:43:50 -07:00
LEGOlord208
65f0cb9f73 Arise error when user has 2FA (#359)
* Arise error when user has 2FA

* Fixed error message

* Removed ticket
2017-04-18 21:35:17 -07:00
LEGOlord208
7bcc0fbaca Added more fields (#354)
* Added more fields

* Fixed error

* Yep ok
2017-04-11 21:51:24 -07:00
Ammar Bandukwala
52ad9e2feb add String() method to User (#350)
* add String() method to User

* put User def in it's own file

* remove usage of t.Run for support w/ older Go versions
2017-04-07 08:19:48 -07:00
Alexander
2e65ecdbb9 Fixed casing for JSON tag for Avatar field on User struct (#339)
When marshalling a user back to JSON, this results in inconsistently cased JSON fields.
2017-03-16 07:05:54 -10:00
jonas747
2d50fc197f Fix racey heartbeat sequence (#303)
* Fix racey heartbeat sequence

* Change all sequence fields to int64
2016-12-28 11:59:02 -08:00
jonas747
edc3213ffb Reuse http client, and export it (#301) 2016-12-25 16:23:11 -08:00
jonas747
3fdc5f373d Add "PermissionAdministrator" to "PermissionAll" (#302) 2016-12-24 11:36:14 -08:00
Bruce Marriner
9e777a083b Linting. 2016-12-11 12:45:34 -06:00
Bruce Marriner
68a784327f Merge branch 'develop' of https://github.com/bwmarrin/discordgo into develop 2016-12-11 12:24:29 -06:00
Bruce Marriner
c541df15df Removed dead code. 2016-12-11 12:24:17 -06:00
Chris Rhodes
db2f9eb29b Support getting the color of a user. (#299) 2016-12-10 21:37:11 -08:00
Chris Rhodes
36601253a4 Remove use of reflect.
This introduces gogenerate'ed EventHandlers from the files in events.go

This also adds support for AddHandlerOnce.
2016-12-03 23:31:07 -08:00
AI
2092185ec5 Implement support for new member role endpoint (#289)
Implements support for the new member role add and delete endpoint
hammerandchisel/discord-api-docs#179
2016-11-30 08:57:22 -08:00
Chris Rhodes
b7c7e60fd5 Fix presence unmarshalling as the values are inconsistent from Discord. (#287) 2016-11-12 11:59:51 -08:00
jonas747
5d1dd7ddac Add nick and roles to Presence 2016-11-07 15:53:54 -08:00
jonas747
f0cb678022 Add member_count to guild 2016-11-06 09:09:54 -08:00
jonas747
56b19073d3 Ratelimits (#273)
* Added ratelimiter

Handles the new ratelimit headers
 - X-RateLimit-Remaining
 - X-RateLimit-Reset
 - X-RateLimit-Global

* Pad only reset time with a second

* Moved ratelimiter out of internal package

* Change for loop, move global ratelimit check inside sleep check

* Moved ratelimiter locking to getBucket

* Added global bucket

* Changed how bucket id's are done

Now each request function will need to specify the bucket id if the
endpoint contains minor variables

* Allow empty bucketID in request

* Remove some uneeded Endpoint* function calls

* Added test for global ratelimits

* Fixed a silly little mistake causing incorrect ratelimits

* Update test comments, Fixed treating a endpoint as 2 in ratelimiting

* Use date header from discord instead of relying on sys time sync

* Update all REST functions to use RequestWithBucketID

* Embed mutex into bucket

* Added webhook and reaction buckets
2016-11-04 08:07:22 -07:00
Chris Rhodes
5ef835fc80 Fix GuildBans. Fixes #263 2016-11-03 22:39:55 -07:00
Chris Rhodes
c96162c425 Add support for Message Reactions. 2016-11-03 22:07:06 -07:00
Chris Rhodes
84a92549bc Merge pull request #274 from iopred/develop
Add Webhook support.
2016-11-03 19:47:15 -07:00
Chris Rhodes
ee3e500749 Add webhook support. 2016-11-03 19:41:57 -07:00
jonas747
9187964002 Added custom rest error type (#271) 2016-10-13 19:13:42 -07:00
jonas747
9f24531220 Update ChannelMessageAck because of api changes (#270) 2016-10-13 12:42:05 -07:00
robbix1206
af3fe4842a Add Support of changing user status (#258)
Add Support of changing user status
2016-09-28 10:04:37 -07:00
Chris Rhodes
581f6e7867 Merge pull request #256 from jonas747/request-members
Added RequestGuildMembers to request guild members from the gateway
2016-09-27 22:08:36 -07:00
Chris Rhodes
ef83d2098f Merge pull request #236 from jonas747/split
Added UserGuild struct, UserGuilds now returns a UserGuild slice
2016-09-27 22:04:37 -07:00
Chris Rhodes
42e934d3b2 Merge pull request #246 from robbix1206/timestamps
Timestamps
2016-09-27 21:22:07 -07:00
Chris Rhodes
8bd3f75441 Merge pull request #227 from jonas747/retry
Retry on 502's
2016-09-27 21:19:25 -07:00
Chris Rhodes
9b6b657083 Merge pull request #249 from iopred/develop
Correctly merge GUILD_UPDATE events. Closes #242
2016-09-27 21:15:03 -07:00
jonas747
9c7c9d3fd2 Added RequestGuildMembers to request guild members from the gateway 2016-09-25 21:29:59 +02:00
soft as HELL
ef3cd76e3d Add mentionable to Role struct 2016-09-11 14:32:41 +03:00
Chris Rhodes
678756c9a9 Simplify Guild.Unavailable and correctly merge GUILD_UPDATE events. 2016-09-08 19:39:29 -07:00
jonas747
2a1f0ff893 Added the CHANNEL_PINS_UPDATE event 2016-07-29 23:40:56 +02:00
jonas747
3fd53413de Added userguild struct, and UserGuilds() now returns a userguild 2016-07-29 23:13:55 +02:00
uppfinnarn
0c11cae782 Timestamp type; a string with a Parse() function
Closes #204
2016-07-28 21:16:10 +02:00
jonas747
092ed4b585 Retry on 502's 2016-07-11 22:30:11 +02:00
Bruce Marriner
af57bc1789 comment Deprecation for VoiceReady and UDPReady 2016-06-24 13:10:56 -05:00
Bruce Marriner
eeb2d4f62d Add mfa_enabled to User struct 2016-06-24 11:55:52 -05:00
Bruce
79d49f86fb Merge pull request #216 from jonas747/userguildsettings
Added UserGuildSettingsEdit
2016-06-15 08:30:01 -05:00
jonas747
f2f2d6430b Added UserGuildSettingsEdit 2016-06-15 12:07:57 +02:00
Bruce Marriner
9dc51d1c49 Only Shard when ShardCount > 1
Also cleaned up identify sending so there's now a function that handles
it instead of duplicate code.  Renamed handshake* structs to identify*
structs to make naming match up.
2016-06-14 13:45:38 -05:00
Bruce Marriner
d03b3eedfa Merge branch 'feature/sharding' of https://github.com/b1naryth1ef/discordgo into b1naryth1ef-feature/sharding 2016-06-14 11:45:59 -05:00
Bruce Marriner
cec33d9477 Arange struct to reduce memory usage. 2016-06-14 09:05:19 -05:00
andrei
835a23a89d Implement guild sharding 2016-06-13 15:34:40 -07:00
Chris Rhodes
323abd1a87 Use embedded Presence in presenceUpdate 2016-06-05 22:41:08 -07:00
jonas747
caadaaaf2c Added guild_positions field to settings 2016-05-18 02:40:41 +02:00
Chris Rhodes
80c2158605 Support streaming status updates. 2016-05-06 15:23:21 -07:00
Bruce Marriner
a9da8a5daf Cleanup, Logging, Finished Resumed code. 2016-04-30 21:40:13 -05:00
Bruce
dd0b83333c Merge pull request #189 from jonas747/develop
Nickname support
2016-04-30 19:12:18 -05:00
Bruce Marriner
e9e9ef86b3 Prevent concurrent writes to gateway websocket. 2016-04-30 19:11:13 -05:00
jonas747
0b313b016f Add nick field to guild member struct 2016-04-30 23:43:52 +02:00
Bruce Marriner
f6de2b2c98 gateway, voice, & logging improvements
We now store teh sessionID of the gateway connection for later use. We
are now caching the gateway url and will use it until unable to connect
to that gateway.  We're not longer smashing the VoiceConnections map
during reconnects which was causing Voice problems. Slight change to
log output format.
2016-04-28 21:15:32 -05:00
Bruce Marriner
098d7861a4 BREAKING - Added RateLimited event
Renamed RateLimit struct to TooManyRequests{} and added new event struct
RateLimited{} which can be registerd to with AddHandler() and will be
emitted anytime a HTTP 429 is received on the HTTP API.
2016-04-28 17:41:05 -05:00
Bruce Marriner
94770635a9 Event handing improvements.
Corrected the Event struct to match it's new state based on Discord docs
and started tracking sequence number and sending it with heatbeats.
Also, move cleanup and comment improvements.
2016-04-28 16:59:45 -05:00
Bruce Marriner
a24f9e3d10 Slight better rate limit handling
This improves greatly on the previous rate limit handling
however still needs review and possible improvement.
Please report bugs!
2016-04-28 13:38:20 -05:00
Bruce Marriner
fc7ce3db94 Initial add of new logging system
This adds a LogLevel setting for both Websocket and VoiceConnections
that can be configured to set the specific log level desired. This
also adds a new logging function that adds additional helpful
information when printing out log messages.
2016-04-26 21:17:51 -05:00