Metadata-Version: 2.1
Name: sopel-dns
Version: 0.5.0
Summary: A DNS lookup plugin for Sopel IRC bots
Author-email: dgw <dgw@technobabbl.es>
License: EFL-2.0
Project-URL: Homepage, https://github.com/dgw/sopel-dns
Project-URL: Bug Tracker, https://github.com/dgw/sopel-dns/issues
Keywords: sopel,plugin,bot,irc
Platform: Linux x86, x86-64
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: Eiffel Forum License (EFL)
Classifier: License :: OSI Approved :: Eiffel Forum License
Classifier: Topic :: Communications :: Chat :: Internet Relay Chat
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: <4,>=3.8
Description-Content-Type: text/markdown
License-File: COPYING
Requires-Dist: sopel>=8.0
Requires-Dist: dnspython<3,>=2.0

# sopel-dns

A DNS lookup plugin for Sopel IRC bots

## Installing

Releases are hosted on PyPI, so after installing Sopel, all you need is `pip`:

```shell
$ pip install sopel-dns
```

### Requirements

* Python 3.8+
* Sopel 8.0+
* `dnspython` 2.x


## Usage

Basic usage performs an 'A' record lookup:

```
<user> .dns domain.tld
<bot>  user: 10.10.0.1
```

To look up IPv6 addresses instead, specify the 'AAAA' record type:

```
<user> .dns domain.tld AAAA
<bot>  user: fd12:3456:789a:1::1
```

Other [supported record types](#supported-dns-record-types) output their
results in a similar fashion. Some types, such as `MX` and `TXT`, split the
output across multiple lines to make it easier to read, at the cost of
possible "spam" if there are many records attached to the queried domain.

### Rate limiting

Normal users are rate-limited to one `.dns` command every 2 minutes, both to
control channel flood and to prevent hammering whatever DNS server Sopel's
host system uses to resolve the submitted queries.


## Supported DNS record types

* `A`
* `AAAA`
* `CNAME`
* `MX`
* `NS`
* `PTR`
* `TXT`

If a record type you want isn't listed here, feel free to request it in an
[issue](https://github.com/dgw/sopel-dns/issues/new). Even better: a pull
request enabling that record type, including a demo of the resulting output.

## Changelog

### 0.5.0

Added:
* Rate limit feedback indicating how much time is left in cooldown ([#3][])

Changed:
* Require Sopel 8.0+

Meta:
* Converted to modern package style, `setup.cfg` → `pyproject.toml`
* Automated releases with GitHub Actions + PyPI Trusted Publishing
* Reworked NEWS file to match the README's style of Markdown

[#3]: https://github.com/dgw/sopel-dns/pull/3


### 0.4.0

Now requires Sopel 7.1, but also works on (upcoming) Sopel 8.0.


### 0.3.1

Tightened `dnspython` requirement vs. Sopel's own. This plugin now requires
Python 3.6+ (because that's what `dnspython` 2.x supports).


### 0.3.0

Added `[dns]` output prefix. This also meant changing most of the plugin's
output from replies to normal "say", which is fine. The flood of HLs from
looking up stuff like `MX` or `TXT` records could get annoying.

Rate limit has been reduced from 5 minutes to 2 minutes.


### 0.2.1

Fixed error when a DNS query has no answer (no results).


### 0.2.0

Added support for choosing DNS record type to look up. Currently understands
`A`, `AAAA`, `CNAME`, `MX`, `NS`, `PTR` (for IP addresses only), and `TXT`.


### 0.1.0

Initial release with support for querying a domain's `A` records.
