API Reference¶
The following section outlines the API Reference of coc.py
Logging in and client creation¶
-
coc.login(email: str, password: str, client: Type[Union[coc.client.Client, coc.events.EventsClient]] = <class 'coc.client.Client'>, **kwargs) → Union[coc.client.Client, coc.events.EventsClient]¶ Eases logging into the coc.py Client.
This function makes logging into the client easy, returning the created client.
- Parameters
email (str) – Your password email from https://developer.clashofclans.com This is used when updating keys automatically if your IP changes
password (str) – Your password login from https://developer.clashofclans.com This is used when updating keys automatically if your IP changes
client – The type of coc.py client to use. This could either be a
ClientorEventsClient, depending on which you wish to use.**kwargs – Any kwargs you wish to pass into the Client object.
Clients¶
Basic Client¶
-
class
coc.Client(*, key_count: int = 1, key_names: str = 'Created with coc.py Client', key_scopes: str = 'clash', throttle_limit: int = 10, loop: asyncio.events.AbstractEventLoop = None, correct_tags: bool = False, throttler=<class 'coc.http.BasicThrottler'>, connector=None, timeout: float = 30.0, cache_max_size: int = 10000, **_)¶ This is the client connection used to interact with the Clash of Clans API.
- Parameters
key_count (int) – The amount of keys to use for this client. Maximum of 10. Defaults to 1.
key_names (str) – Default name for keys created to use for this client. All keys created or to be used with this client must have this name. Defaults to “Created with coc.py Client”.
throttle_limit (int) –
The number of requests per token per second to send to the API. Once hitting this limit, the library will automatically throttle your requests.
Note
Setting this value too high may result in the API rate-limiting your requests. This means you cannot request for ~30-60 seconds.
Warning
Setting this value too high may result in your requests being deemed “API Abuse”, potentially resulting in an IP ban.
Defaults to 10 requests per token, per second.
loop (
asyncio.AbstractEventLoop, optional) – Theasyncio.AbstractEventLoopto use for HTTP requests. Anasyncio.get_event_loop()will be used ifNoneis passedcorrect_tags (
bool) – Whether the client should correct tags before requesting them from the API. This process involves stripping tags of whitespace and adding a # prefix if not present. Defaults toFalse.connector (
aiohttp.BaseConnector) – The aiohttp connector to use. By default this isNone.timeout (
float) – The number of seconds before timing out with an API query. Defaults to 30.cache_max_size (
int) – The max size of the internal cache layer. Defaults to 10 000. Set this toNoneto remove any cache layer.
-
loop¶ The loop that is used for HTTP requests
Methods:
close()Closes the HTTP connection
dispatch(event_name, *args, **kwargs)Dispatches an event listener matching the event_name parameter.
get_clan(tag[, cls])Get information about a single clan by clan tag.
get_clan_labels(*[, limit, before, after])List clan labels.
get_clan_war(clan_tag[, cls])Retrieve information about clan’s current clan war
get_clan_wars(clan_tags[, cls])Retrieve information multiple clan’s current clan wars
get_clans(tags[, cls])Get information about multiple clans by clan tag.
get_current_war(clan_tag[, cwl_round, cls])Retrieve a clan’s current war.
get_current_wars(clan_tags[, cls])Retrieve information multiple clan’s current wars.
get_league(league_id)Get league information
get_league_group(clan_tag[, cls])Retrieve information about clan’s current clan war league group.
get_league_named(league_name)Get a location by name.
get_league_war(war_tag[, cls])Retrieve information about a clan war league war.
get_league_wars(war_tags[, clan_tag, cls])Retrieve information about multiple league wars
get_location(location_id)Get information about specific location
get_location_clans([location_id, limit, …])Get clan rankings for a specific location
get_location_clans_versus([location_id, …])Get clan versus rankings for a specific location
get_location_named(location_name)Get a location by name.
get_location_players([location_id, limit, …])Get player rankings for a specific location
get_location_players_versus([location_id, …])Get player versus rankings for a specific location
get_members(clan_tag[, cls])List clan members.
get_player(player_tag[, cls])Get information about a single player by player tag.
get_player_labels(*[, limit, before, after])List player labels.
get_players(player_tags[, cls])Get information about a multiple players by player tag.
get_season_rankings(league_id, season_id)Get league season rankings.
get_seasons(league_id)Get league seasons.
get_warlog(clan_tag[, cls])Retrieve a clan’s clan war log.
login(email, password)Retrieves all keys and creates an HTTP connection ready for use.
reset_keys([number_of_keys])Manually reset any number of keys.
search_clans(*[, name, war_frequency, …])Search all clans by name and/or filtering the results using various criteria.
search_leagues(*[, limit, before, after])Get list of leagues.
search_locations(*[, limit, before, after])List all available locations
-
close()¶ Closes the HTTP connection
-
dispatch(event_name: str, *args, **kwargs)¶ Dispatches an event listener matching the event_name parameter.
-
await
get_clan(tag: str, cls=<class 'coc.clans.Clan'>, **kwargs)¶ Get information about a single clan by clan tag.
Clan tags can be found using clan search operation.
- Parameters
tag (str) – The clan tag to search for.
- Returns
The clan with provided tag.
- Return type
SearchClan
-
await
get_clan_labels(*, limit: int = None, before: str = None, after: str = None)¶ List clan labels.
-
await
get_clan_war(clan_tag: str, cls=<class 'coc.wars.ClanWar'>, **kwargs)¶ Retrieve information about clan’s current clan war
- Parameters
clan_tag (str) – The clan tag to search for.
- Returns
The clan’s current war.
- Return type
- Raises
-
get_clan_wars(clan_tags: collections.abc.Iterable, cls=<class 'coc.wars.ClanWar'>, **kwargs)¶ Retrieve information multiple clan’s current clan wars
Example
tags = [...] async for clan_war in Client.get_clan_wars(tags): print(clan_war.opponent)
- Parameters
clan_tags (
collections.Iterable) – An iterable of clan tags to search for.- Returns
An iterator of all clan wars. This will skip clans who have a private war-log.
- Return type
coc.iterators.WarIteratorofClanWar
-
get_clans(tags: collections.abc.Iterable, cls=<class 'coc.clans.Clan'>, **kwargs)¶ Get information about multiple clans by clan tag. Refer to Client.get_clan for more information.
Example
tags = [...] async for clan in Client.get_clans(tags): print(clan.name)
- Parameters
tags (
collections.Iterable) – An iterable of clan tags to search for.- Returns
An iterable of the requested clans.
- Return type
ClanIteratorofClan
-
await
get_current_war(clan_tag: str, cwl_round=<WarRound.current_war: 1>, cls=<class 'coc.wars.ClanWar'>, **kwargs)¶ Retrieve a clan’s current war.
Unlike
Client.get_clan_warorClient.get_league_war, this method will search for a regular war, and if the clan is innotInWarstate, search for a current league war.This simplifies what would otherwise be 2-3 function calls to find a war.
If you don’t wish to search for CWL wars, use
Client.get_clan_war().This method will consume the
PrivateWarLogerror, instead returningNone.Note
You can differentiate between a regular clan war and a clan war league (CWL) war by using the helper property,
ClanWar.is_cwl.- Parameters
- Returns
The clan’s current war.
If no league group is found, or the group is in
preparation, this method will return theClanWar, which appearsnotInWar, rather than returningNone.If the clan is in CWL, the league group can be accessed via
ClanWar.league_group.- Return type
-
get_current_wars(clan_tags: collections.abc.Iterable, cls=<class 'coc.wars.ClanWar'>, **kwargs)¶ Retrieve information multiple clan’s current wars.
See
Client.get_current_war()for more information.Example
tags = [...] async for war in Client.get_current_wars(tags): print(war.type)
- Parameters
clan_tags (
collections.Iterable) – An iterable of clan tags to search for.- Returns
Current wars for the clans.
- Return type
coc.iterators.CurrentWarIteratorofClanWar
-
await
get_league_group(clan_tag: str, cls=<class 'coc.wars.ClanWarLeagueGroup'>, **kwargs)¶ Retrieve information about clan’s current clan war league group.
- Parameters
clan_tag (str) – The clan tag to search for.
- Returns
The clan’s war league group.
- Return type
- Raises
-
await
get_league_named(league_name: str)¶ Get a location by name.
This is somewhat equivilant to
leagues = await client.search_leagues(limit=None) return utils.get(leagues, name=league_name)
-
await
get_league_war(war_tag: str, cls=<class 'coc.wars.ClanWar'>, **kwargs)¶ Retrieve information about a clan war league war.
-
get_league_wars(war_tags: collections.abc.Iterable, clan_tag: str = None, cls=<class 'coc.wars.ClanWar'>, **kwargs)¶ Retrieve information about multiple league wars
Example
tags = [...] async for league_war in Client.get_league_wars(tags): print(league_war.opponent)
-
await
get_location_clans(location_id: int = 'global', *, limit: int = None, before: str = None, after: str = None)¶ Get clan rankings for a specific location
- Parameters
- Returns
- Return type
-
await
get_location_clans_versus(location_id: int = 'global', *, limit: int = None, before: str = None, after: str = None)¶ Get clan versus rankings for a specific location
- Parameters
- Returns
- Return type
-
await
get_location_named(location_name: str)¶ Get a location by name.
This is somewhat equivilant to:
locations = await client.search_locations(limit=None) return utils.get(locations, name=location_name)
-
await
get_location_players(location_id: int = 'global', *, limit: int = None, before: str = None, after: str = None)¶ Get player rankings for a specific location
- Parameters
- Returns
- Return type
-
await
get_location_players_versus(location_id: int = 'global', *, limit: int = None, before: str = None, after: str = None)¶ Get player versus rankings for a specific location
- Parameters
- Returns
- Return type
-
await
get_members(clan_tag: str, cls=<class 'coc.players.ClanMember'>, **kwargs)¶ List clan members.
This is equivilant to
(await Client.get_clan('tag')).members.- Parameters
clan_tag (str) – The clan tag to search for.
- Returns
A list of :class:`ClanMember`s in the clan.
- Return type
List[
ClanMember]
-
await
get_player(player_tag: str, cls=<class 'coc.players.Player'>, **kwargs)¶ Get information about a single player by player tag. Player tags can be found either in game or by from clan member lists.
-
await
get_player_labels(*, limit: int = None, before: str = None, after: str = None)¶ List player labels.
-
get_players(player_tags: collections.abc.Iterable, cls=<class 'coc.players.Player'>, **kwargs)¶ Get information about a multiple players by player tag. Player tags can be found either in game or by from clan member lists.
Example
tags = [...] async for player in Client.get_players(tags): print(player)
- Parameters
player_tags (
collections.Iterable) – An iterable of player tags to search for.- Returns
- Return type
PlayerIteratorofSearchPlayer
-
await
get_season_rankings(league_id: int, season_id: int)¶ Get league season rankings. Note that league season information is available only for Legend League.
- Parameters
- Returns
- Return type
listofRankedPlayer
-
await
get_seasons(league_id: int)¶ Get league seasons. Note that league season information is available only for Legend League.
-
await
get_warlog(clan_tag: str, cls=<class 'coc.wars.ClanWarLogEntry'>, **kwargs)¶ Retrieve a clan’s clan war log.
Note
Please see documentation for
ClanWarLogEntryfor different attributes which are present when the entry is a regular clan war or a league clan war. The difference can be found withClanWarLogEntry.is_league_entry.- Parameters
clan_tag (str) – The clan tag to search for.
- Returns
A list of the
ClanWarLogEntryin the warlog.- Return type
List[
ClanWarLogEntry]- Raises
-
await
login(email: str, password: str)¶ Retrieves all keys and creates an HTTP connection ready for use.
- Parameters
email (str) – Your password email from https://developer.clashofclans.com This is used when updating keys automatically if your IP changes
password (str) – Your password login from https://developer.clashofclans.com This is used when updating keys automatically if your IP changes
-
await
reset_keys(number_of_keys: int = None)¶ Manually reset any number of keys.
Under normal circumstances, this method should not need to be called.
- Parameters
number_of_keys (int) – The number of keys to reset. Defaults to None - all keys.
-
await
search_clans(*, name: str = None, war_frequency: str = None, location_id: int = None, min_members: int = None, max_members: int = None, min_clan_points: int = None, min_clan_level: int = None, limit: int = None, before: str = None, after: str = None, cls=<class 'coc.clans.Clan'>, **kwargs)¶ Search all clans by name and/or filtering the results using various criteria.
At least one filtering criteria must be defined and if name is used as part of search, it is required to be at least three characters long.
- Parameters
name (str, optional) – The clan name.
war_frequency (str, optional) – The war frequency.
location_id (int, optional) – The location id.
min_members (int, optional) – The minimum number of members.
max_members (int, optional) – The maximum number of members.
min_clan_points (int, optional) – The minumum clan points.
min_clan_level (int, optional) – The minimum clan level.
limit (int) – The number of clans to search for.
- Returns
A list of all clans found matching criteria provided.
- Return type
listofSearchClan- Raises
HTTPException – No options were passed.
-
await
search_leagues(*, limit: int = None, before: str = None, after: str = None)¶ Get list of leagues.
- Parameters
- Returns
Returns a list of all leagues found. Could be
None- Return type
Events Client¶
-
class
coc.EventsClient(**options)¶ This is the client connection used to interact with the Clash of Clans API.
- Parameters
key_count (int) – The amount of keys to use for this client. Maximum of 10. Defaults to 1.
key_names (str) – Default name for keys created to use for this client. All keys created or to be used with this client must have this name. Defaults to “Created with coc.py Client”.
throttle_limit (int) –
The number of requests per token per second to send to the API. Once hitting this limit, the library will automatically throttle your requests.
Note
Setting this value too high may result in the API rate-limiting your requests. This means you cannot request for ~30-60 seconds.
Warning
Setting this value too high may result in your requests being deemed “API Abuse”, potentially resulting in an IP ban.
Defaults to 10 requests per token, per second.
loop (
asyncio.AbstractEventLoop, optional) – Theasyncio.AbstractEventLoopto use for HTTP requests. Anasyncio.get_event_loop()will be used ifNoneis passedcorrect_tags (
bool) – Whether the client should correct tags before requesting them from the API. This process involves stripping tags of whitespace and adding a # prefix if not present. Defaults toFalse.connector (
aiohttp.BaseConnector) – The aiohttp connector to use. By default this isNone.timeout (
float) – The number of seconds before timing out with an API query. Defaults to 30.cache_max_size (
int) – The max size of the internal cache layer. Defaults to 10 000. Set this toNoneto remove any cache layer.
-
loop¶ The loop that is used for HTTP requests
Methods:
add_clan_updates(*tags)Add clan tags to receive updates for.
add_events(*events)Shortcut to add many events at once.
add_player_updates(*tags)Add player tags to receive events for.
add_war_updates(*tags)Add clan tags to receive war events for.
close()Closes the client and all running tasks.
dispatch(event_name, *args, **kwargs)Dispatches an event listener matching the event_name parameter.
event(function)A decorator or regular function that registers an event.
get_clan(tag[, cls])Get information about a single clan by clan tag.
get_clan_labels(*[, limit, before, after])List clan labels.
get_clan_war(clan_tag[, cls])Retrieve information about clan’s current clan war
get_clan_wars(clan_tags[, cls])Retrieve information multiple clan’s current clan wars
get_clans(tags[, cls])Get information about multiple clans by clan tag.
get_current_war(clan_tag[, cwl_round, cls])Retrieve a clan’s current war.
get_current_wars(clan_tags[, cls])Retrieve information multiple clan’s current wars.
get_league(league_id)Get league information
get_league_group(clan_tag[, cls])Retrieve information about clan’s current clan war league group.
get_league_named(league_name)Get a location by name.
get_league_war(war_tag[, cls])Retrieve information about a clan war league war.
get_league_wars(war_tags[, clan_tag, cls])Retrieve information about multiple league wars
get_location(location_id)Get information about specific location
get_location_clans([location_id, limit, …])Get clan rankings for a specific location
get_location_clans_versus([location_id, …])Get clan versus rankings for a specific location
get_location_named(location_name)Get a location by name.
get_location_players([location_id, limit, …])Get player rankings for a specific location
get_location_players_versus([location_id, …])Get player versus rankings for a specific location
get_members(clan_tag[, cls])List clan members.
get_player(player_tag[, cls])Get information about a single player by player tag.
get_player_labels(*[, limit, before, after])List player labels.
get_players(player_tags[, cls])Get information about a multiple players by player tag.
get_season_rankings(league_id, season_id)Get league season rankings.
get_seasons(league_id)Get league seasons.
get_warlog(clan_tag[, cls])Retrieve a clan’s clan war log.
login(email, password)Retrieves all keys and creates an HTTP connection ready for use.
remove_clan_updates(*tags)Remove clan tags that you receive events updates for.
remove_events(*events)Shortcut to remove many events at once.
remove_player_updates(*tags)Remove player tags that you receive events updates for.
remove_war_updates(*tags)Remove player tags that you receive events updates for.
reset_keys([number_of_keys])Manually reset any number of keys.
A blocking call which runs the loop and script.
search_clans(*[, name, war_frequency, …])Search all clans by name and/or filtering the results using various criteria.
search_leagues(*[, limit, before, after])Get list of leagues.
search_locations(*[, limit, before, after])List all available locations
-
add_clan_updates(*tags)¶ Add clan tags to receive updates for.
- Parameters
*tags (str) – The clan tags to add. If you wish to pass in an iterable, you must unpack it with *.
Example
client.add_clan_updates("#tag1", "#tag2", "#tag3") tags = ["#tag4", "#tag5", "#tag6"] client.add_clan_updates(*tags)
-
add_events(*events)¶ Shortcut to add many events at once.
This method just iterates over
EventsClient.listener().- Parameters
*events (
function) – The event listener functions to add.
-
add_player_updates(*tags)¶ Add player tags to receive events for.
- Parameters
\*tags (str) – The player tags to add. If you wish to pass in an iterable, you must unpack it with *.
Example
client.add_player_updates("#tag1", "#tag2", "#tag3") tags = ["#tag4", "#tag5", "#tag6"] client.add_player_updates(*tags)
-
add_war_updates(*tags)¶ Add clan tags to receive war events for.
- Parameters
\*tags (str) – The clan tags to add that will receive war events. If you wish to pass in an iterable, you must unpack it with *.
Example
client.add_war_updates("#tag1", "#tag2", "#tag3") tags = ["#tag4", "#tag5", "#tag6"] client.add_war_updates(*tags)
-
close()¶ Closes the client and all running tasks.
-
dispatch(event_name: str, *args, **kwargs)¶ Dispatches an event listener matching the event_name parameter.
-
event(function)¶ A decorator or regular function that registers an event.
The function may be be a coroutine.
- Parameters
function (function) – The function to be registered (not needed if used with a decorator)
Example
import coc client = coc.login(...) @client.event @coc.ClanEvents.description_change() async def player_donated_troops(old_player, new_player): print('{} has donated troops!'.format(new_player))
import coc client = coc.login(...) @client.event @coc.ClientEvents.maintenance_start() async def maintenance_has_started(): print('maintenance has started!')
Note
The order of decorators is important - the
@client.eventone must lay above- Returns
function
- Return type
The function registered
-
await
get_clan(tag: str, cls=<class 'coc.clans.Clan'>, **kwargs)¶ Get information about a single clan by clan tag.
Clan tags can be found using clan search operation.
- Parameters
tag (str) – The clan tag to search for.
- Returns
The clan with provided tag.
- Return type
SearchClan
-
await
get_clan_labels(*, limit: int = None, before: str = None, after: str = None)¶ List clan labels.
-
await
get_clan_war(clan_tag: str, cls=<class 'coc.wars.ClanWar'>, **kwargs)¶ Retrieve information about clan’s current clan war
- Parameters
clan_tag (str) – The clan tag to search for.
- Returns
The clan’s current war.
- Return type
- Raises
-
get_clan_wars(clan_tags: collections.abc.Iterable, cls=<class 'coc.wars.ClanWar'>, **kwargs)¶ Retrieve information multiple clan’s current clan wars
Example
tags = [...] async for clan_war in Client.get_clan_wars(tags): print(clan_war.opponent)
- Parameters
clan_tags (
collections.Iterable) – An iterable of clan tags to search for.- Returns
An iterator of all clan wars. This will skip clans who have a private war-log.
- Return type
coc.iterators.WarIteratorofClanWar
-
get_clans(tags: collections.abc.Iterable, cls=<class 'coc.clans.Clan'>, **kwargs)¶ Get information about multiple clans by clan tag. Refer to Client.get_clan for more information.
Example
tags = [...] async for clan in Client.get_clans(tags): print(clan.name)
- Parameters
tags (
collections.Iterable) – An iterable of clan tags to search for.- Returns
An iterable of the requested clans.
- Return type
ClanIteratorofClan
-
await
get_current_war(clan_tag: str, cwl_round=<WarRound.current_war: 1>, cls=<class 'coc.wars.ClanWar'>, **kwargs)¶ Retrieve a clan’s current war.
Unlike
Client.get_clan_warorClient.get_league_war, this method will search for a regular war, and if the clan is innotInWarstate, search for a current league war.This simplifies what would otherwise be 2-3 function calls to find a war.
If you don’t wish to search for CWL wars, use
Client.get_clan_war().This method will consume the
PrivateWarLogerror, instead returningNone.Note
You can differentiate between a regular clan war and a clan war league (CWL) war by using the helper property,
ClanWar.is_cwl.- Parameters
- Returns
The clan’s current war.
If no league group is found, or the group is in
preparation, this method will return theClanWar, which appearsnotInWar, rather than returningNone.If the clan is in CWL, the league group can be accessed via
ClanWar.league_group.- Return type
-
get_current_wars(clan_tags: collections.abc.Iterable, cls=<class 'coc.wars.ClanWar'>, **kwargs)¶ Retrieve information multiple clan’s current wars.
See
Client.get_current_war()for more information.Example
tags = [...] async for war in Client.get_current_wars(tags): print(war.type)
- Parameters
clan_tags (
collections.Iterable) – An iterable of clan tags to search for.- Returns
Current wars for the clans.
- Return type
coc.iterators.CurrentWarIteratorofClanWar
-
await
get_league_group(clan_tag: str, cls=<class 'coc.wars.ClanWarLeagueGroup'>, **kwargs)¶ Retrieve information about clan’s current clan war league group.
- Parameters
clan_tag (str) – The clan tag to search for.
- Returns
The clan’s war league group.
- Return type
- Raises
-
await
get_league_named(league_name: str)¶ Get a location by name.
This is somewhat equivilant to
leagues = await client.search_leagues(limit=None) return utils.get(leagues, name=league_name)
-
await
get_league_war(war_tag: str, cls=<class 'coc.wars.ClanWar'>, **kwargs)¶ Retrieve information about a clan war league war.
-
get_league_wars(war_tags: collections.abc.Iterable, clan_tag: str = None, cls=<class 'coc.wars.ClanWar'>, **kwargs)¶ Retrieve information about multiple league wars
Example
tags = [...] async for league_war in Client.get_league_wars(tags): print(league_war.opponent)
-
await
get_location_clans(location_id: int = 'global', *, limit: int = None, before: str = None, after: str = None)¶ Get clan rankings for a specific location
- Parameters
- Returns
- Return type
-
await
get_location_clans_versus(location_id: int = 'global', *, limit: int = None, before: str = None, after: str = None)¶ Get clan versus rankings for a specific location
- Parameters
- Returns
- Return type
-
await
get_location_named(location_name: str)¶ Get a location by name.
This is somewhat equivilant to:
locations = await client.search_locations(limit=None) return utils.get(locations, name=location_name)
-
await
get_location_players(location_id: int = 'global', *, limit: int = None, before: str = None, after: str = None)¶ Get player rankings for a specific location
- Parameters
- Returns
- Return type
-
await
get_location_players_versus(location_id: int = 'global', *, limit: int = None, before: str = None, after: str = None)¶ Get player versus rankings for a specific location
- Parameters
- Returns
- Return type
-
await
get_members(clan_tag: str, cls=<class 'coc.players.ClanMember'>, **kwargs)¶ List clan members.
This is equivilant to
(await Client.get_clan('tag')).members.- Parameters
clan_tag (str) – The clan tag to search for.
- Returns
A list of :class:`ClanMember`s in the clan.
- Return type
List[
ClanMember]
-
await
get_player(player_tag: str, cls=<class 'coc.players.Player'>, **kwargs)¶ Get information about a single player by player tag. Player tags can be found either in game or by from clan member lists.
-
await
get_player_labels(*, limit: int = None, before: str = None, after: str = None)¶ List player labels.
-
get_players(player_tags: collections.abc.Iterable, cls=<class 'coc.players.Player'>, **kwargs)¶ Get information about a multiple players by player tag. Player tags can be found either in game or by from clan member lists.
Example
tags = [...] async for player in Client.get_players(tags): print(player)
- Parameters
player_tags (
collections.Iterable) – An iterable of player tags to search for.- Returns
- Return type
PlayerIteratorofSearchPlayer
-
await
get_season_rankings(league_id: int, season_id: int)¶ Get league season rankings. Note that league season information is available only for Legend League.
- Parameters
- Returns
- Return type
listofRankedPlayer
-
await
get_seasons(league_id: int)¶ Get league seasons. Note that league season information is available only for Legend League.
-
await
get_warlog(clan_tag: str, cls=<class 'coc.wars.ClanWarLogEntry'>, **kwargs)¶ Retrieve a clan’s clan war log.
Note
Please see documentation for
ClanWarLogEntryfor different attributes which are present when the entry is a regular clan war or a league clan war. The difference can be found withClanWarLogEntry.is_league_entry.- Parameters
clan_tag (str) – The clan tag to search for.
- Returns
A list of the
ClanWarLogEntryin the warlog.- Return type
List[
ClanWarLogEntry]- Raises
-
await
login(email: str, password: str)¶ Retrieves all keys and creates an HTTP connection ready for use.
- Parameters
email (str) – Your password email from https://developer.clashofclans.com This is used when updating keys automatically if your IP changes
password (str) – Your password login from https://developer.clashofclans.com This is used when updating keys automatically if your IP changes
-
remove_clan_updates(*tags)¶ Remove clan tags that you receive events updates for.
- Parameters
*tags (str) – The clan tags to remove. If you wish to pass in an iterable, you must unpack it with *.
Example
client.remove_clan_updates("#tag1", "#tag2", "#tag3") tags = ["#tag4", "#tag5", "#tag6"] client.remove_clan_updates(*tags)
-
remove_events(*events)¶ Shortcut to remove many events at once.
- Parameters
*events (
function) – The event listener functions to remove.
-
remove_player_updates(*tags)¶ Remove player tags that you receive events updates for.
- Parameters
\*tags (str) – The player tags to remove. If you wish to pass in an iterable, you must unpack it with *.
Example
client.remove_player_updates("#tag1", "#tag2", "#tag3") tags = ["#tag4", "#tag5", "#tag6"] client.remove_player_updates(*tags)
-
remove_war_updates(*tags)¶ Remove player tags that you receive events updates for.
- Parameters
\*tags (str) – The clan tags to remove that will receive war events. If you wish to pass in an iterable, you must unpack it with *.
Example
client.remove_war_updates("#tag1", "#tag2", "#tag3") tags = ["#tag4", "#tag5", "#tag6"] client.remove_war_updates(*tags)
-
await
reset_keys(number_of_keys: int = None)¶ Manually reset any number of keys.
Under normal circumstances, this method should not need to be called.
- Parameters
number_of_keys (int) – The number of keys to reset. Defaults to None - all keys.
-
run_forever()¶ A blocking call which runs the loop and script.
This is useful if you have no other clients to deal with and just wish to run the script and receive updates indefinately.
Roughly equivilant to:
try: client.loop.run_forever() except KeyboardInterrupt: client.close() finally: client.loop.close()
-
await
search_clans(*, name: str = None, war_frequency: str = None, location_id: int = None, min_members: int = None, max_members: int = None, min_clan_points: int = None, min_clan_level: int = None, limit: int = None, before: str = None, after: str = None, cls=<class 'coc.clans.Clan'>, **kwargs)¶ Search all clans by name and/or filtering the results using various criteria.
At least one filtering criteria must be defined and if name is used as part of search, it is required to be at least three characters long.
- Parameters
name (str, optional) – The clan name.
war_frequency (str, optional) – The war frequency.
location_id (int, optional) – The location id.
min_members (int, optional) – The minimum number of members.
max_members (int, optional) – The maximum number of members.
min_clan_points (int, optional) – The minumum clan points.
min_clan_level (int, optional) – The minimum clan level.
limit (int) – The number of clans to search for.
- Returns
A list of all clans found matching criteria provided.
- Return type
listofSearchClan- Raises
HTTPException – No options were passed.
-
await
search_leagues(*, limit: int = None, before: str = None, after: str = None)¶ Get list of leagues.
- Parameters
- Returns
Returns a list of all leagues found. Could be
None- Return type
Event Reference¶
Events are called when using the EventsClient client, clans/players/wars
have been registered, and have been started.
Events need to be registered in order to be called by the client. You can register events by
using either EventsClient.event(), or EventsClient.add_events().
All events the client will dispatch are listed below.
Event Error¶
-
coc.on_event_error(event_name, \*args, \*\*kwargs)¶ This event is called when another event raises an exception and fails. By default, it will print the traceback to stderr and the exception will be ignored.
The information of the exception raised and the exception itself can be retrieved with a standard call to
sys.exc_info().- Parameters
event_name – The event which caused the error
args – The positional args for the event which raised the error
kwargs – The keyword-args for the event which raised the error
Clan Events¶
These events are all related to clan changes and changes to players within the clan. Clans can be added by registering clan tags and relevant events.
Clan Level Change¶
Clan Description Change¶
Clan Public WarLog Change¶
Clan Type Change¶
Clan Badge Change¶
Clan Required Trophies Change¶
-
coc.on_clan_required_trophies_change(old_requirement, new_requirement, clan)¶ This event is called when the clan’s trophy requirement changes.
Clan War Frequency Change¶
Clan War Win Streak Change¶
Clan War Wins Change¶
Clan War Ties Change¶
Clan War Losses Change¶
Clan Member Join¶
-
coc.on_clan_member_join(member, clan)¶ This event is called when a member joins a clan.
- Parameters
member (
BasicPlayer) – The member who joined.clan (
SearchClan) – The clan the member joined.
Clan Member Leave¶
-
coc.on_clan_member_leave(member, clan)¶ This event is called when a member leaves a clan.
- Parameters
member (
BasicPlayer) – The member who left.clan (
SearchClan) – The clan the member left.
Clan Member Name Change¶
-
coc.on_clan_member_name_change(old_name, new_name, player)¶ This event is called when a clan member’s name changes. The player’s clan can be accessed through
BasicPlayer.clanand is of typeSearchClan
Clan Member Donations¶
-
coc.on_clan_member_donation(old_donations, new_donations, player)¶ This event is called when a clan member’s donations changes. The player’s clan can be accessed through
BasicPlayer.clanand is of typeSearchClan
Clan Member Received¶
-
coc.on_clan_member_received(old_received, new_received, player)¶ This event is called when a clan member’s donations received changes. The player’s clan can be accessed through
BasicPlayer.clanand is of typeSearchClan
Clan Member Trophy Count Change¶
-
coc.on_clan_member_trophy_change(old_trophies, new_trophies, player)¶ This event is called when a clan member’s trophy count has changed. The player’s clan can be accessed through
BasicPlayer.clanand is of typeSearchClan
Clan Member Versus Trophy Count Change¶
-
coc.on_clan_member_versus_trophy_change(old_trophies, new_trophies, player)¶ This event is called when a clan member’s versus trophy count has changed. The player’s clan can be accessed through
BasicPlayer.clanand is of typeSearchClan
Clan Member Role Change¶
-
coc.on_clan_member_role_change(old_role, new_role, player)¶ This event is called when a clan member’s role changes. The player’s clan can be accessed through
BasicPlayer.clanand is of typeSearchClan
Clan Member Rank Change¶
-
coc.on_clan_member_rank_change(old_rank, new_rank, player)¶ This event is called when a clan member’s rank changes. The player’s clan can be accessed through
BasicPlayer.clanand is of typeSearchClan
Clan Member Level Change¶
-
coc.on_clan_member_level_change(old_level, new_level, player)¶ This event is called when a clan member’s level changes. The player’s clan can be accessed through
BasicPlayer.clanand is of typeSearchClan
War Events¶
These events are all related to war changes, such as war attacks and state changes. Clans can be added by registering clan tags and relevant events.
War Update¶
-
coc.on_war_update(old_war, new_war)¶ This event is called when a war update occurs, regardless of it’s nature. This could be an attack, state change or other.
- Parameters
old_war (
War) – The war object before the changenew_war (
War) – The war object after the change
New War Attack¶
-
coc.on_war_attack(attack, war)¶ This event is called when a new war attack has been made. This could be an offensive or defensive attack. This will be called once per new attack, even if multiple new attacks are found.
- Parameters
attack (
WarAttack) – The new attack.war (
War) – The war this attack belongs to.
War State Change¶
-
coc.on_war_state_change(current_state, war)¶ This event is called when a change of war state occurs. This will not necessarily be called when the client checks for a change, as a task will be created at the last update to wait for new state changes.
- Parameters
current_state (
str) – The current war state it has changed to.war (
War) – The war that has changed state
Player Events¶
These events are all related to player changes and changes to clans within the player. Clans can be added by registering clan tags and relevant events.
Player Update¶
-
coc.on_player_update(old_player, new_player)¶ This event is called when a player changes. This event will be called regardless of the update that follows. This could be a name or level change, or a troop/spell upgrade.
- Parameters
old_war (
SearchPlayer) – The player object before the changenew_war (
SearchPlayer) – The player object after the change
Player Name Change¶
Player Town Hall Change¶
Player Builder Hall Change¶
-
coc.on_player_builderhall_upgrade(old_builderhall, new_builderhall, player)¶ This event is called when a player’s builder hall has been upgraded.
Player Best Trophies Change¶
Player Best Versus Trophies Change¶
-
coc.on_player_best_versus_trophies_change(old_best, new_best, player)¶ This event is called when a player’s best versus trophy count changes.
Player War Stars Change¶
Player Attack Wins Change¶
Player Defense Wins Change¶
-
coc.on_player_defense_wins_change(old_defenses, new_defenses, player)¶ This event is called when a player’s defenses trophy count changes.
Player Versus Attack Change¶
-
coc.on_player_versus_attack_change(old_attacks, new_attacks, player)¶ This event is called when a player’s versus attack count changes.
Player Trophies Change¶
Player League Change¶
Player Role Change¶
Player Donations Change¶
Player Received Change¶
-
coc.on_player_received_change(old_received, new_received, player)¶ This event is called when a player’s donations received count changes.
Player’s Clan Rank Change¶
Player’s Previous Clan Rank Change¶
-
coc.on_player_previous_clan_rank_change(old_rank, new_rank, player)¶ This event is called when a player’s previous clan rank changes. This would typically be at the end of the season.
Player Achievement Change¶
-
coc.on_player_achievement_change(old_achievement, new_achievement, player)¶ This event is called when a player’s achievement has changed.
- Parameters
old_achievement (
Achievement) – The player’s old achievement.new_achievement (
Achievement) – The player’s new achievement.player (
SearchPlayer) – The new player object
Player Troop Upgrade¶
Player Spell Upgrade¶
Player Hero Upgrade¶
Player Clan Join¶
Player Clan Leave¶
Player’s Clan Level Change¶
-
coc.on_player_clan_level_change(old_level, new_level, clan, player)¶ This event is called when a player’s clan’s level changes.
Data Models¶
These are the data models used by the API. All calls will return one of these
Due to the unpredictable nature of the API and what Supercell returns, all attributes have the possibility of being None. However, as much as possible, the library tries to return an object most appropriate to results returned.
Due to this, there are many objects for what may seem like similar things.
Note: If a SearchPlayer inherits BasicPlayer, it will inherit all
attributes of both Player and BasicPlayer, however it will not necessarily
inherit WarMember
Clans¶
-
class
coc.BaseClan¶ An ABC that implements some common operations on clans, regardless of type.
Methods:
Get detailed player information for every player in the clan.
Attributes:
str- A formatted link to open the clan in-game-
get_detailed_members() → coc.iterators.PlayerIterator¶ Get detailed player information for every player in the clan. This will return an AsyncIterator of
Player.Example
clan = await client.get_clan('tag') async for player in clan.get_detailed_members(): print(player.name)
- Returns
- Return type
AsyncIterator of
Player- the clan members.
str- A formatted link to open the clan in-game
-
-
class
coc.PlayerClan¶ Represents a clan that belongs to a player.
Methods:
Get detailed player information for every player in the clan.
Attributes:
str- A formatted link to open the clan in-game-
get_detailed_members() → coc.iterators.PlayerIterator¶ Get detailed player information for every player in the clan. This will return an AsyncIterator of
Player.Example
clan = await client.get_clan('tag') async for player in clan.get_detailed_members(): print(player.name)
- Returns
- Return type
AsyncIterator of
Player- the clan members.
str- A formatted link to open the clan in-game
-
-
class
coc.RankedClan¶ Represents the clan object returned by leader-board rankings.
-
points¶ The clan’s trophy-count. If retrieving info for versus leader-boards, this will be
None.- Type
-
versus_points¶ The clan’s versus trophy count. If retrieving info for regular leader boards, this will be
None.- Type
Methods:
Get detailed player information for every player in the clan.
Attributes:
str- A formatted link to open the clan in-game-
get_detailed_members() → coc.iterators.PlayerIterator¶ Get detailed player information for every player in the clan. This will return an AsyncIterator of
Player.Example
clan = await client.get_clan('tag') async for player in clan.get_detailed_members(): print(player.name)
- Returns
- Return type
AsyncIterator of
Player- the clan members.
str- A formatted link to open the clan in-game
-
-
class
coc.WarClan¶ Represents a War Clan that the API returns.
Note
If this is called via
ClanWarLog.clan, thenWarClan.members,WarClan.attacksandWarClan.defenseswill be empty.If this is called via
ClanWarLog.opponent, thenWarClan.members,WarClan.attacksandWarClan.defenseswill be empty.WarClan.exp_earnedandWarClan.attackswill beNone.If this is called via
ClanWar.clanorClanWar.opponentthenWarClan.exp_earnedwill beNone.Attributes:
Returns all clan member’s attacks this war.
Returns all clan member’s defenses this war.
Indicates whether the clan is the opponent.
A list of members that are in the war.
str- A formatted link to open the clan in-gameMethods:
Get detailed player information for every player in the clan.
get_member(tag)Get a member of the clan for the given tag, or
Noneif not found.-
attacks¶ Returns all clan member’s attacks this war. This is sorted by attack order.
- Type
List[
WarAttack]
-
defenses¶ Returns all clan member’s defenses this war. This is sorted by attack order.
Equivalent to the other team’s
.attacksproperty.- Type
List[
WarAttack]
-
get_detailed_members() → coc.iterators.PlayerIterator¶ Get detailed player information for every player in the clan. This will return an AsyncIterator of
Player.Example
clan = await client.get_clan('tag') async for player in clan.get_detailed_members(): print(player.name)
- Returns
- Return type
AsyncIterator of
Player- the clan members.
-
get_member(tag: str) → Optional[coc.war_members.ClanWarMember]¶ Get a member of the clan for the given tag, or
Noneif not found.- Returns
Optional[:class:`ClanWarMember`]
- Return type
The clan member who matches the tag.
-
members¶ A list of members that are in the war. This is sorted by
ClanWarMember.map_position- Type
List[
ClanWarMember]
str- A formatted link to open the clan in-game
-
-
class
coc.ClanWarLeagueClan¶ Represents a Clan War League Clan.
Methods:
Get detailed player information for every player in the clan.
Attributes:
A list of players participating in this clan war league season.
str- A formatted link to open the clan in-game-
get_detailed_members() → coc.iterators.PlayerIterator¶ Get detailed player information for every player in the clan. This will return an AsyncIterator of
Player.Example
clan = await client.get_clan('tag') async for player in clan.get_detailed_members(): print(player.name)
- Returns
- Return type
AsyncIterator of
Player- the clan members.
-
members¶ A list of players participating in this clan war league season.
This list is selected when the clan chooses to participate in CWL, and will not change throughout the season. It is sometimes referred to as the master roster.
- Type
List[
ClanWarLeagueClanMember]
str- A formatted link to open the clan in-game
-
-
class
coc.Clan¶ Represents a Clash of Clans clan.
-
versus_points¶ The clan’s versus trophy count. This is calculated according to members’ versus trophy counts.
- Type
-
war_frequency¶ The frequency for when this clan goes to war. For example, this could be
always.- Type
-
public_war_log¶ Indicates if the clan has a public war log. If this is
False, operations to find the clan’s current war may raisePrivateWarLog.- Type
-
label_cls¶ The type which the labels found in
Clan.labelswill be of. Ensure any overriding of this inherits fromcoc.Label.- Type
-
member_cls¶ The type which the members found in
Clan.memberswill be of. Ensure any overriding of this inherits fromcoc.ClanMember.- Type
-
war_league¶ The clan’s CWL league.
- Type
Methods:
Get detailed player information for every player in the clan.
get_member(tag)Return a
ClanMemberwith the tag provided.get_member_by(**attrs)Returns the first
ClanMemberthat meets the attributes passedAttributes:
A
ListofLabelthat the clan has.A list of members that belong to the clan.
str- A formatted link to open the clan in-game-
get_detailed_members() → coc.iterators.PlayerIterator¶ Get detailed player information for every player in the clan. This will return an AsyncIterator of
Player.Example
clan = await client.get_clan('tag') async for player in clan.get_detailed_members(): print(player.name)
- Returns
- Return type
AsyncIterator of
Player- the clan members.
-
get_member(tag: str) → Optional[coc.players.ClanMember]¶ Return a
ClanMemberwith the tag provided. ReturnsNoneif not found.Example
clan = await client.get_clan('clan_tag') member = clan.get_member('player_tag')
- Returns
The member who matches the tag provided
- Return type
Optional[
ClanMember]
-
get_member_by(**attrs) → Optional[coc.players.ClanMember]¶ Returns the first
ClanMemberthat meets the attributes passedThis search implements the
coc.utils.get()functionExample
-
members¶ A list of members that belong to the clan.
- Type
List[
ClanMember]
str- A formatted link to open the clan in-game
-
Players¶
-
class
coc.BasePlayer¶ An ABC that implements some common operations on players, regardless of type.
Attributes:
str- A formatted link to open the player in-gamestr- A formatted link to open the player in-game
-
class
coc.ClanMember¶ Represents a Clash of Clans Clan Member.
-
role¶ The member’s role in a clan. To get a string as rendered in-game, do
str(member.role).- Type
-
clan_cls¶ The class to use to create the
ClanMember.clanattribute. Ensure any overriding of this inherits fromcoc.Clanorcoc.PlayerClan.- Type
-
league_cls¶ The class to use to create the
Clanmember.leagueattribute. Ensure any overriding of this inherits fromcoc.League.- Type
Methods:
Get detailed clan details for the player’s clan.
Attributes:
str- A formatted link to open the player in-game-
await
get_detailed_clan() → Optional[Clan]¶ Get detailed clan details for the player’s clan. If the player’s clan is
None,this will returnNone.Example
player = await client.get_player('tag') clan = await player.get_detailed_clan()
str- A formatted link to open the player in-game
-
-
class
coc.RankedPlayer¶ Represents a leaderboard-ranked player.
-
role¶ The member’s role in a clan. To get a string as rendered in-game, do
str(member.role).- Type
-
clan_cls¶ The class to use to create the
ClanMember.clanattribute. Ensure any overriding of this inherits fromcoc.Clanorcoc.PlayerClan.- Type
-
league_cls¶ The class to use to create the
Clanmember.leagueattribute. Ensure any overriding of this inherits fromcoc.League.- Type
-
attack_wins¶ The player’s number of attack wins. If retrieving info for versus leader-boards, this will be
None.- Type
-
defense_wins¶ The player’s number of defense wins. If retrieving info for versus leader-boards, this will be
None.- Type
-
versus_trophies¶ The player’s versus trophy count. If retrieving info for regular leader-boards, this will be
None.- Type
Methods:
Get detailed clan details for the player’s clan.
Attributes:
str- A formatted link to open the player in-game-
await
get_detailed_clan() → Optional[Clan]¶ Get detailed clan details for the player’s clan. If the player’s clan is
None,this will returnNone.Example
player = await client.get_player('tag') clan = await player.get_detailed_clan()
str- A formatted link to open the player in-game
-
-
class
coc.ClanWarLeagueClanMember¶ Represents a clan member who is a part of the Clan War League master roster.
Attributes:
str- A formatted link to open the player in-gamestr- A formatted link to open the player in-game
-
class
coc.ClanWarMember¶ Represents a War Member that the API returns. Depending on which method calls this, some attributes may be
None.-
war¶ War: The current war this member is in.
Attributes:
The member’s attacks this war.
Returns the best opponent attack on this base.
The member’s defenses this war.
Indicates whether the member is from the opponent clan or not.
Returns the previous best opponent attack on this base.
str- A formatted link to open the player in-gameGet the total number of stars the member has gained this war.
-
previous_best_opponent_attack¶ Returns the previous best opponent attack on this base.
This is useful for calculating the new stars and/or destruction for new attacks.
- Type
str- A formatted link to open the player in-game
-
-
class
coc.Player¶ Represents a Clash of Clans Player.
-
role¶ The member’s role in a clan. To get a string as rendered in-game, do
str(member.role).- Type
-
clan_cls¶ The class to use to create the
ClanMember.clanattribute. Ensure any overriding of this inherits fromcoc.Clanorcoc.PlayerClan.- Type
-
league_cls¶ The class to use to create the
Clanmember.leagueattribute. Ensure any overriding of this inherits fromcoc.League.- Type
-
achievement_cls¶ The constructor used to create the
Player.achievementslist. This must inheritAchievement.- Type
-
hero_cls¶ The constructor used to create the
Player.heroeslist. This must inherit fromHero.- Type
-
label_cls¶ The constructor used to create the
Player.labelslist. This must inherit fromLabel.- Type
-
spell_cls¶ The constructor used to create the
Player.spellslist. This must inherit fromSpell.- Type
-
troop_cls¶ The constructor used to create the
Player.troopslist. This must inherit fromTroop.- Type
-
town_hall_weapon¶ The player’s town hall weapon level, or
Noneif it doesn’t exist.- Type
Optional[
int]
-
legend_statistics¶ The player’s legend statistics, or
Noneif they have never been in the legend league.- Type
Optional[
LegendStatistics]
Attributes:
A list of the player’s achievements.
A
Listof the player’s builder-baseTroop.A
Listof the player’sHero.A
Listof the player’s home-baseTroop.A
ListofLabelthat the player has.str- A formatted link to open the player in-gameA
Listof the player’s siege-machineTroop.A
Listof the player’sSpellordered as they appear in-game.A
Listof the player’sTroop.Methods:
get_achievement(name[, default_value])Returns an achievement with the given name.
Get detailed clan details for the player’s clan.
get_hero(name[, default_value])Returns a hero with the given name.
get_spell(name[, default_value])Returns a spell with the given name.
get_troop(name[, is_home_troop, default_value])Returns a troop with the given name.
-
achievements¶ A list of the player’s achievements.
- Type
List[
Achievement]
-
builder_troops¶ A
Listof the player’s builder-baseTroop.This will return troops in the order found in both barracks and labatory in-game.
- Type
List[
Troop]
-
get_achievement(name: str, default_value=None) → Optional[coc.miscmodels.Achievement]¶ Returns an achievement with the given name.
- Parameters
name (
str) – The name of an achievement as found in-game.default_value – The value to return if the
nameis not found. Defaults toNone.
- Returns
The returned achievement or the
default_valueif not found, which defaults toNone..- Return type
Optional[
Achievement]
-
await
get_detailed_clan() → Optional[Clan]¶ Get detailed clan details for the player’s clan. If the player’s clan is
None,this will returnNone.Example
player = await client.get_player('tag') clan = await player.get_detailed_clan()
-
get_hero(name: str, default_value=None) → Optional[coc.miscmodels.Hero]¶ Returns a hero with the given name.
-
get_spell(name: str, default_value=None) → Optional[coc.miscmodels.Spell]¶ Returns a spell with the given name.
-
get_troop(name: str, is_home_troop=None, default_value=None) → Optional[coc.miscmodels.Troop]¶ Returns a troop with the given name.
- Parameters
name (
str) – The name of a troop as found in-game.is_home_troop (
bool) – Whether the troop you’re trying to find is a home troop. This changes how the lookup is done, in order to facilitate searching for aBaby Dragon. By default, this will search from both builder and home troops.default_value – The value to return if the
nameis not found. Defaults toNone.
- Returns
The returned troop or the
default_valueif not found, which defaults toNone..- Return type
Optional[
Troop]
-
heroes¶ A
Listof the player’sHero.This will return heroes in the order found in the store and labatory in-game.
- Type
List[
Hero]
-
home_troops¶ A
Listof the player’s home-baseTroop.This will return troops in the order found in both barracks and labatory in-game.
- Type
List[
Troop]
str- A formatted link to open the player in-game
-
siege_machines¶ A
Listof the player’s siege-machineTroop.This will return siege machines in the order found in both barracks and labatory in-game.
- Type
List[
Troop]
-
spells¶ A
Listof the player’sSpellordered as they appear in-game.This will return spells in the order found in both spell factory and labatory in-game.
- Type
List[
Spell]
-
troops¶ A
Listof the player’sTroop.Troops are not ordered in this attribute. Use either
Player.home_troopsorPlayer.builder_troopsif you want an ordered list.- Type
List[
Troop]
-
Wars¶
-
class
coc.ClanWar¶ Represents a Current Clash of Clans War
-
league_group¶ ClanWarLeagueGroup: The war’s league group. This isNoneunless this is a Clan League War.
Attributes:
Returns all attacks this war, sorted by attack order.
Returns a boolean indicating if the war is a Clan War League (CWL) war.
A list of members that are in the war.
Returns the war status, based off the home clan.
Returns either
friendly,randomorcwl.Methods:
get_attack(attacker_tag, defender_tag)Return the
WarAttackwith the attacker tag and defender tag provided.get_defenses(defender_tag)get_member(tag)Return a
ClanWarMemberwith the tag provided.get_member_by(**attrs)Returns the first
WarMemberthat meets the attributes passed-
get_attack(attacker_tag: str, defender_tag: str) → Optional[coc.war_attack.WarAttack]¶ Return the
WarAttackwith the attacker tag and defender tag provided.If the attack was not found, this will return
None.- Returns
The attack with the correct attacker and defender tags
- Return type
-
get_defenses(defender_tag: str) → List[coc.war_attack.WarAttack]¶ Return a
listofWarAttackfor the defender tag provided.If the player has no defenses, this will return an empty list.
- Returns
The player’s defenses
- Return type
list`[:class:`WarAttack]
-
get_member(tag: str) → Optional[ClanWarMember]¶ Return a
ClanWarMemberwith the tag provided. ReturnsNoneif not found.Example
war = await client.get_current_war('clan_tag') member = war.get_member('player_tag')
- Returns
Optional[:class:`ClanWarMember`]
- Return type
The member who matches the tag provided.
-
get_member_by(**attrs)¶ Returns the first
WarMemberthat meets the attributes passedThis will return the first member matching the attributes passed.
An example of this looks like:
member = ClanWar.get_member(tag='tag')
This search implements the
coc.utils.get()function
-
members¶ A list of members that are in the war.
- Type
List[
ClanWarMember]
-
status¶ Returns the war status, based off the home clan.
Strings returned are determined by result and state, as listed below:
inWarwarEndedwinningwontiedtielosinglost- Type
-
type¶ Returns either
friendly,randomorcwl.This will returns
Noneif the clan is not in war, orcwlif the clan is in a league war.Possibilities for the length of preparation time for a friendly war include: 15 minutes, 30 minutes, 1 hour, 2 hours, 4 hours, 6 hours, 8 hours, 12 hours, 16 hours, 20 hours or 24 hours.
- Type
-
-
class
coc.ClanWarLogEntry¶ Represents a Clash of Clans War Log Entry
Note
Please see the
WarClandocumention for a full list of missing attributes, as the clan and opponent attributes are only partially filled by the API.If the
ClanWarLogEntry.typeiscwl, theWarClan.attack_count,WarClan.starsandWarClan.destructionare all a total which over the period of that CWL season.In addition, if it is a CWL entry,
opponentandresultwill beNone.Attributes:
Boolean indicating if the entry is a Clan War League (CWL) entry.
-
class
coc.ClanWarLeagueGroup¶ Represents a Clan War League (CWL) Group
-
rounds¶ List[List[
str]]: A list of lists containing all war tags for each round.Note
This only returns the current or past rounds. Any future rounds filled with #0 war tags will not appear.
To find the number of rounds in this season, use
LeagueGroup.number_of_rounds.
Attributes:
Returns all participating clans.
Methods:
get_wars([cwl_round, cls])Returns war information for every war in a league round.
get_wars_for_clan(clan_tag[, cls])Returns every war the clan has participated in this current CWL.
-
clans¶ Returns all participating clans.
- Type
List[class
- Type
LeagueClan]
-
get_wars(cwl_round=<WarRound.current_war: 1>, cls: Type[coc.wars.ClanWar] = <class 'coc.wars.ClanWar'>) → coc.iterators.LeagueWarIterator¶ Returns war information for every war in a league round.
This will return an AsyncIterator of
ClanWar.Example
group = await client.get_league_group('clan_tag') async for war in group.get_wars(): print(war.clan_tag)
- Parameters
cls (Type[
ClanWar]: The constructor used to create the league war.) – This should inherit fromClanWar.cwl_round (
WarRound) – An enum detailing the type of round to get. Could becoc.WarRound.previous_war,coc.WarRound.current_warorcoc.WarRound.preparation. This defaults tococ.WarRound.current_war.
- Returns
AsyncIterator of :class:`ClanWar`
- Return type
All wars in the given round.
-
get_wars_for_clan(clan_tag: str, cls: Type[coc.wars.ClanWar] = <class 'coc.wars.ClanWar'>)¶ Returns every war the clan has participated in this current CWL.
This will return an AsyncIterator of
ClanWar.Example
group = await client.get_league_group('#clan_tag') async for war in group.get_wars_for_clan('#clantag'): print(war.start_time)
- Parameters
- Returns
AsyncIterator of :class:`ClanWar`
- Return type
All wars in the given round.
-
WarAttack¶
-
class
coc.WarAttack¶ Represents a Clash of Clans War Attack
Attributes:
Returns the attacking player.
Returns the defending player.
Returns whether the attack is a fresh (first) attack on the defender.
-
attacker¶ Returns the attacking player.
- Type
-
defender¶ Returns the defending player.
- Type
-
is_fresh_attack¶ Returns whether the attack is a fresh (first) attack on the defender.
- Type
boolean
-
Achievement¶
-
class
coc.Achievement¶ Represents a Clash of Clans Achievement.
Attributes:
Returns a boolean which indicates if the achievement belongs to the builder base
Returns a boolean which indicates whether the achievement is completed (3 stars achieved)
Returns a boolean which indicates if the achievement belongs to the home base
-
is_builder_base¶ Returns a boolean which indicates if the achievement belongs to the builder base
- Type
-
is_completed¶ Returns a boolean which indicates whether the achievement is completed (3 stars achieved)
- Type
-
Troop¶
-
class
coc.Troop¶ Represents a Clash of Clans Troop.
Attributes:
Returns a boolean that indicates whether the troop belongs to the builder base.
Returns a boolean that indicates whether the troop belongs to the home base.
Returns a boolean that indicates whether the troop is the max level
-
is_builder_base¶ Returns a boolean that indicates whether the troop belongs to the builder base.
- Type
-
is_home_base¶ Returns a boolean that indicates whether the troop belongs to the home base.
- Type
-
Hero¶
-
class
coc.Hero¶ Represents a Clash of Clans Hero.
Attributes:
Returns a boolean that indicates whether the hero belongs to the builder base.
Returns a boolean that indicates whether the hero belongs to the home base.
Returns a boolean that indicates whether the hero is the max level.
-
is_builder_base¶ Returns a boolean that indicates whether the hero belongs to the builder base.
- Type
-
Spell¶
-
class
coc.Spell¶ Represents a Clash of Clans Spell.
Attributes:
Returns a boolean that indicates whether the spell belongs to the builder base.
Returns a boolean that indicates whether the spell belongs to the home base.
Returns a boolean that indicates whether the spell is the max level.
-
is_builder_base¶ Returns a boolean that indicates whether the spell belongs to the builder base.
- Type
-
is_home_base¶ Returns a boolean that indicates whether the spell belongs to the home base.
- Type
-
League Objects¶
-
class
coc.League¶ Represents a Clash of Clans League
-
localised_name¶ str: A localised name of the location. The extent of the use of this is unknown at present.
-
Badge and Icons¶
-
class
coc.Badge¶ Represents a Clash Of Clans Badge.
Methods:
save(filepath[, size])This function is a coroutine.
-
await
save(filepath, size=None) → int¶ This function is a coroutine.
Save this badge as a file-like object.
- Parameters
filepath (
os.PathLike) – The filename to save the badge to.size (Optional[
str]) – Eithersmall,mediumorlarge. The default ismedium.
- Returns
The number of bytes written
- Return type
- Raises
HTTPException – Saving the badge failed.
NotFound – The URL was not found.
-
await
-
class
coc.Icon¶ Represents a Clash Of Clans Icon.
Methods:
save(filepath[, size])This function is a coroutine.
-
await
save(filepath, size=None) → int¶ This function is a coroutine.
Save this icon as a file-like object.
- Parameters
filepath (
os.PathLike) – The filename to save the badge to.size (Optional[
str]) – Eithertiny,smallormedium. The default issmall.
- Returns
:class:`int`
- Return type
The number of bytes written.
- Raises
HTTPException – Saving the badge failed.
NotFound – The URL was not found.
-
await
Timestamp¶
-
class
coc.Timestamp¶ Represents a Clash of Clans Timestamp
Attributes:
Returns the time in UTC now as a datetime object.
Returns the number of seconds until the timestamp.
Returns the timestamp as a UTC datetime object.
-
now¶ Returns the time in UTC now as a datetime object.
- Type
datetime
-
time¶ Returns the timestamp as a UTC datetime object.
- Type
datetime
-
Exceptions¶
The following exceptions are thrown by the library.
-
exception
coc.ClashOfClansException¶ Base exception for coc.py
-
exception
coc.HTTPException(response=None, data=None)¶ Base exception for when a HTTP request fails
-
response¶ aiohttp.ClientResponse- The response of the failed HTTP request.
-
-
exception
coc.InvalidArgument¶ Thrown when an error status 400 occurs.
Client provided incorrect parameters for the request.
Subclass of
HTTPException
-
exception
coc.InvalidCredentials(response=None, data=None)¶ Thrown when an error status 403 occurs and the reason is invalid credentials.
Special Exception thrown when missing/incorrect credentials were passed. This is when your email/password pair is incorrect. Subclass of
HTTPException
-
exception
coc.Forbidden(response=None, data=None)¶ Thrown when an error status 403 occurs.
API token does not grant access to the requested resource.
Subclass of
HTTPException
-
exception
coc.NotFound(response=None, data=None)¶ Thrown when an error status 404 occurs.
The resource was not found.
Subclass of
HTTPException
-
exception
coc.Maintenance(response=None, data=None)¶ Thrown when an error status 503 occurs.
Service is temporarily unavailable because of maintenance.
Subclass of
HTTPException
-
exception
coc.GatewayError(response=None, data=None)¶ Thrown when a gateway error occurs. These are either status 502 or 504
Error code 502: Bad Gateway Error code 504: The Gateway has timed-out.
Subclass of
HTTPException