Nostrum.Util (Nostrum v0.4.6) View Source

Utility functions

Link to this section Summary

Functions

Returns the gateway url and shard count for current websocket connections.

Gets the latencies of all shard connections.

Gets the latency of the shard connection from a Nostrum.Struct.WSState.t() struct.

Attempts to convert a string to an atom.

Helper for defining all the methods used for struct and encoding transformations.

Returns the number of milliseconds since unix epoch.

Returns the current date as an ISO formatted string.

Returns the number of shards.

Converts a map into an atom-keyed map.

Since we're being sacrilegious and converting strings to atoms from the WS, there will be some atoms that we see that aren't defined in any Discord structs. This method mainly serves as a means to define those atoms once so the user isn't warned about them in the Nostrum.Util.maybe_to_atom/1 function when they are in fact harmless.

Returns the number of microseconds since unix epoch.

Link to this section Functions

Link to this function

enum_to_struct(enum, struct)

View Source

Specs

gateway() :: {String.t(), integer()}

Returns the gateway url and shard count for current websocket connections.

If by chance no gateway connection has been made, will fetch the url to use and store it for future use.

Link to this function

get_all_shard_latencies()

View Source

Specs

get_all_shard_latencies() :: %{
  required(Nostrum.Struct.WSState.shard_num()) => non_neg_integer() | nil
}

Gets the latencies of all shard connections.

Calls get_shard_latency/1 on all shards and returns a map whose keys are shard nums and whose values are latencies in milliseconds.

Link to this function

get_shard_latency(state)

View Source

Specs

get_shard_latency(Nostrum.Struct.WSState.t()) :: non_neg_integer() | nil

Gets the latency of the shard connection from a Nostrum.Struct.WSState.t() struct.

Returns the latency in milliseconds as an integer, returning nil if unknown.

Specs

maybe_to_atom(atom() | String.t()) :: atom()

Attempts to convert a string to an atom.

If atom does not currently exist, will warn that we're doing an unsafe conversion.

Link to this macro

nostrum_struct(body)

View Source (macro)

Helper for defining all the methods used for struct and encoding transformations.

Example

Nostrum.Util.nostrum_struct(%{
  author: User,
  mentions: [User],
  mention_roles: [User],
  embeds: [Embed]
})

Specs

now() :: integer()

Returns the number of milliseconds since unix epoch.

Specs

now_iso() :: String.t()

Returns the current date as an ISO formatted string.

Specs

num_shards() :: integer()

Returns the number of shards.

This is not the number of currently active shards, but the number of shards specified in your config.

Specs

safe_atom_map(map()) :: map()

Converts a map into an atom-keyed map.

Given a map with variable type keys, returns the same map with all keys as atoms.

This function will attempt to convert keys to an existing atom, and if that fails will default to creating a new atom while displaying a warning. The idea here is that we should be able to see if any results from Discord are giving variable keys. Since we will define all types of objects returned by Discord, the amount of new atoms created SHOULD be 0. 👀

Since we're being sacrilegious and converting strings to atoms from the WS, there will be some atoms that we see that aren't defined in any Discord structs. This method mainly serves as a means to define those atoms once so the user isn't warned about them in the Nostrum.Util.maybe_to_atom/1 function when they are in fact harmless.

Specs

usec_now() :: integer()

Returns the number of microseconds since unix epoch.