forked from sopel-irc/sopel
-
Notifications
You must be signed in to change notification settings - Fork 1
/
NEWS
1176 lines (883 loc) · 39.6 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
This file is used to auto-generate the "Changelog" section of Sopel's website.
When adding new entries, follow the style guide in NEWS.spec.md to avoid causing
problems with the site build.
Changes between 6.6.4 and 6.6.5
===============================
Module changes
--------------
* Fixed url module not cleaning punctuation when auto-titling [[#1515][]]
* Fixed url module's punctuation-cleaning on Python 2 [[#1517][]]
* Fixed `.redditor` command with newer `praw` versions (4.0+) [[#1506][]]
* Reloading modules now runs their `shutdown()` routines [[#1412][]]
[#1412]: https://github.com/sopel-irc/sopel/pull/1412
[#1506]: https://github.com/sopel-irc/sopel/pull/1506
[#1515]: https://github.com/sopel-irc/sopel/pull/1515
[#1517]: https://github.com/sopel-irc/sopel/pull/1517
Changes between 6.6.3 and 6.6.4
===============================
Module changes
--------------
* Replaced `help` pastebin with `clbin.com`
* `ptpb.pw` shut down due to abuse — see [ptpb/pb#246](
https://github.com/ptpb/pb/issues/246) for more
* More news on this front (reducing Sopel's dependence on specific pastebins)
in a future release. Several ideas are under consideration.
* Cleaned up code in `instagram` and `unicode` modules
* Core modules now use `bot.channels` instead of deprecated `bot.privileges`
Core changes
------------
* Privilege tracking now always updates both `bot.channels` & `bot.privileges`,
where before some handlers only updated one or the other
* This *should* have zero effect on behavior, but do report any observed.
Changes between 6.6.2 and 6.6.3
===============================
Module changes
--------------
* Fixed loading etymology module on Python 3.3
* Added Unicode support to calc module's `.py` output
* Correctly quote URL parameters in etymology and search modules
Core changes
------------
* Added docstrings to the privilege level constants in `sopel.module`
Changes between 6.6.1 and 6.6.2
===============================
Module changes
--------------
* wiktionary tries harder to get a valid result before erroring out
Core changes
------------
* Fixed an inconsistency between interpretations of the `--config` option in
normal operation vs. wizard mode
* Requirement specifiers tightened up to reduce/prevent `pip` trying to install
incompatible dependency versions (`IPython`, `dnspython`)
* SASL token is now split when required according to spec
* Multi-byte Unicode characters are now handled correctly when splitting lines
Changes between 6.6.0 and 6.6.1
===============================
Module changes
--------------
* spellcheck's `pyenchant` dependency is no longer required for py3.7+
* This should alleviate a lot of installation problems due to `pyenchant`
being unmaintained. If use of the spellcheck module is desired, the
necessary libraries may be installed manually.
Changes between 6.5.3 and 6.6.0
===============================
Sopel 6.6.0 has been a long time coming, but it contains a metric ton of fixes
and enhancements. The big stuff is yet to come in Sopel 7, though; stay tuned!
(You can get some hints by browsing the [GitHub milestones][].)
View and contribute toward Sopel's budgetary needs by visiting the project's
new [Open Collective page](https://opencollective.com/sopel).
Now that Sopel 6.6.0 is released, the focus will shift from preparing the new
release to migrating the website and documentation off of Embolalia's personal
infrastructure. Once this migration is complete, Sopel's [documentation][docs]
will be updated to reflect the changes/additions listed below. Questions about
the new (and old) API methods are welcome in [#sopel][] on Freenode, of course,
as always. Thank you for bearing with this transitional period!
Importantly, a couple of broken modules have been removed in this release. For
easy reference, they and their PyPI-installable replacements are listed near the
top of the "[Module changes](#module-changes)" section.
Because this is the last release planned before Sopel 7, it's important to note
some upcoming changes. They're mostly for module developers, or for bot owners
who run unmaintained third-party modules (which might need manual updating).
But first, a user-facing change. Sopel is drifting toward a more streamlined
release model, which will see most of the core module library split out into
separate packages. Moving modules to their own packages will enable faster fixes
when APIs change, and easier module adoption by members of the community.
Further process details will appear in future changelogs as modules are moved
out of core, but the plan is to have Sopel "require" modules it used to include
for a release or two after their removal. Existing installations should thereby
have a smooth transition, as long as they get updated reasonably often. To
discuss this plan, visit issue [#1291][].
And now, for the developer stuff.
There will be some attention given to how `Identifier` objects work in Sopel 7.
In particular, the way lowercase works appears to have been wrong for some time.
Subscribe to issue [#1389][] for updates, or to join the discussion on the best
plan for addressing this.
Also in Sopel 7, the following deprecated functions in `sopel.web` will be
removed: `get()`, `head()`, `post()`, `get_urllib_object()`. Module authors
should replace these with equivalent code using `requests`. If you don't know
what that is, you're in for a treat: <https://pypi.org/project/requests/>
Remaining `sopel.web` functions might also move in a future major release. See
[#1318][] and comment your opinion if you are a module developer. There is still
plenty of time to give feedback; nothing will happen before Sopel 8 at the
earliest.
Support for multiple help examples on each module command is planned for Sopel 7
and will allow for clearer command and argument documentation. The current help
system uses a deterministic but unintuitive method to choose a single example to
output. The current plan is to make the new multi-example behavior opt-in, so
only help for modules that are explicitly updated to support it will change.
Follow this initiative in [#1200][].
Bot owners and admins might appreciate the new ignore system proposal, which
would (among other things) make "hostmask" blocks actually block hostmasks! See
[#1355][] to participate in the design process; this change is tentatively
planned for Sopel 7 but may be pushed back.
And finally, for users who hate SQLite with a passion: Work on bringing back
alternate DB support has begun! It's unclear how soon this will be ready, but
users who want to switch off SQLite to another database engine might be able to
do so as early as Sopel 7. Follow the ups and downs of this long-awaited
journey at [#1446][] for the time being.
[docs]: https://sopel.chat/docs/
[#sopel]: irc://chat.freenode.net/sopel
[GitHub milestones]: https://github.com/sopel-irc/sopel/milestones
[#1200]: https://github.com/sopel-irc/sopel/issues/1200
[#1291]: https://github.com/sopel-irc/sopel/issues/1291
[#1318]: https://github.com/sopel-irc/sopel/issues/1318
[#1355]: https://github.com/sopel-irc/sopel/issues/1355
[#1389]: https://github.com/sopel-irc/sopel/issues/1389
[#1446]: https://github.com/sopel-irc/sopel/pull/1446
----
Module changes
--------------
* Added emoticons module: includes `.shrug`, `.tableflip`, `.lenny`, and other
common kaomoji
* Added instagram module: displays information about Instagram links in chat
* Removed movie: The OMDb API went private some time ago (Q2 2017)
* See [`sopel-modules.imdb`][pypi-imdb] on PyPI for a functional replacement
* Removed weather: Yahoo deprecated its weather service, the last known keyless weather API
* See [`sopel-modules.weather`][pypi-weather] on PyPI for a functional
replacement that also adds the forecast command originally planned to launch
with Sopel 6.6.0.
* admin module's `.set` command handles spaces properly now
* bugzilla no longer spits out an error on shutdown if its domain list is empty
* dice module's `.roll`/`.dice`/`.d` command gives friendlier errors, and its
`.choice`/`.choose`/`.ch` command has cleaner output (will be further improved
in a later release)
* etymology module updated to work with etymonline.com's changes
* ip module can now look up nicknames (user's hostname) & IPv6 addresses
* ip module switched from deprecated GeoIP database to GeoIP2
* isup module can be forced to ignore untrusted/broken HTTPS with a new command
alias, `.isupinsecure`
* lmgtfy module gained improved output URLs (HTTPS, encoded query) and help
examples
* reddit module now picks up links under all commonly used subdomains
* reload's habit of duplicating packaged modules' command output has been
significantly curtailed
* There are still some edge cases (like reloading a module with a removed
function) that might still cause problems, but the majority of module
updates should be OK now.
* This feature will continue to improve over the next few releases.
* search module should behave better when encountering Unicode in URLs on py2
* search now warns `.ddg`/`.g` users of a bug affecting multiple "site:"
operators in a single query
* This is a bug in DuckDuckGo's plain-HTML SERP, and they have ignored all
attempts to report it. Sopel's DuckDuckGo code might be rewritten to use an
unaffected interface in the future.
* tld module gracefully handles missing arguments now
* translate now handles API failures gracefully
* url module can now create a short URL for convenience when fetching title
* only URLs longer than configured minimum length
* off by default
* url module will say an error if `.title` command fails
* url module's URL finder will ignore suspicious trailing punctuation, making
the auto-title feature more reliable when links are included in sentences
* version module no longer prints "wat" to the console/log when answering CTCP
`VERSION` requests
* wiktionary module now decodes HTML entities in its output before sending, and
it should also now give correct results for affixes & definitions containing
reference tags
* xkcd fetching by comic title should work again (switched back-end search
provider)
* Many modules updated to use HTTPS in both API calls and output
[pypi-imdb]: https://pypi.org/project/sopel-modules.imdb/
[pypi-weather]: https://pypi.org/project/sopel-modules.weather/
Core changes
------------
* Added `userserv` option for `auth_method`
* Added default value of `'UTC'` to `default_timezone`
* Added `alias_nicks` option
* Lets Sopel respond to (a) nickname(s) other than the name it uses for its
IRC nick
* Made handling `CNAME`'d TLS hostnames more forgiving
* Raw logging is no longer enabled by default
* Comparisons between Identifiers and other types were improved
* Sopel no longer sends the sticky modifier for capabilities
* Database tables are now created using "IF NOT EXISTS" to reduce error potential
* Deprecated `sopel.web` calls in various modules updated to use `requests`
instead
* Intents/CTCP handling fixed
* Fixed more cases where module shutdown routines weren't running
API changes
-----------
* New formatting methods: `italic`, `strikethrough`, `monospace`, `hex_color`, `reverse` (inverted video)
* With the exception of italics, these are all "niche" formatting codes that
have relatively limited client support, but they are included for
completeness.
* `sopel.db.get_uri()` was returning an incorrectly formatted result, now fixed
* Fixed populating `bot.channels` privileges dicts on connect
* Fixed updating `User` objects when receiving `NICK` events from the server
* Documentation added/corrected in several places
* Command prefix in examples is now assumed to match the default regex pattern (currently `\.`)
* This fixes some issues with incorrect help output, but might cause new
problems in modules that use non-standard prefixes in their examples.
* Sopel's maintenance team regrets not providing advance warning of this
change, but the potential impact is limited to perhaps a few misplaced
characters in help output, at most—same as the bug itself, but likely with a
much lower incidence.
Changes between 6.5.2 and 6.5.3
===============================
Module changes
--------------
* tell module takes nicknames up to 30 characters long now (previously 20)
* reddit module (and Sopel, by extension) once again accepts any installed
version of PRAW
Core changes
------------
* Specified which `IPython` versions pip should give Sopel depending on Python
version in use
* Fixed trying to use `pytest` stuff in production
* Various testing tweaks
Changes between 6.5.1 and 6.5.2
===============================
Larger than the usual "patch" release because it's been so long since the last
version and a number of bugs crept in. New maintainer (dgw) says hi.
To reduce the "dependency hell" of installing things that Sopel doesn't need
unless specific modules are used, the `spellcheck` and `ipython` modules will
likely be removed from core and published separately in a future release
(tentatively, Sopel 7).
----
Module changes
--------------
* Added (restored) `.bing` command to search module, and fixed Bing results
* Updated DDG ad filtering, and converted query URLs in search module to HTTPS
* Fixed search module `.suggest` command using Google suggestions API
* Fixed reddit and updated PRAW version requirement
* reload module no longer tries to reload nonexistent modules when passed the
name of a system package (e.g. "time" or "re")
* remind module will now give the reminder time in the correct timezone when
using `.at`
* wikipedia module ignores `File:` namespace links, and output from other Sopel
bots' wikipedia modules
* Fixed retrieving xkcd comics by number
* Fixed currency module (updated API URLs)
* Tweaked url module's title finder to reduce garbage from Gawker/Kinja sites
* help module now filters out duplicate commands from its command list
* Fixed wikipedia module's handling of special characters like `&`
* Prevent wikipedia module spewing an error if someone posts a link to an
article that doesn't exist
* help module now sends the command list to ptpb.pw, as GitHub removed their
anonymous Gist API
* Switched calc module to use new backend service for `.py` command, to reduce
outages
* Added physical temperature limit to units module
* Tweaked argument handling in pronouns module
Core changes
------------
* Logger bug squashed
* Shutdown method handling fixed
* Added documentation in a few places
* Made finding the system SSL/TLS certificate trust store more robust
* Modules with example tests no longer need to hack around `pytest` running
their `setup()` routines
* Corrected `IPython` dependency for ipython module (now installs with Sopel
automatically)
* Widened acceptable `requests` version range
API changes
-----------
* Module `shutdown()` methods should fire correctly now
* `ListAttribute` config values now return `[]` (empty list) when blank instead
of `[""]` (empty string in list)
* Updated documentation for (still deprecated) `sopel.web` (the documentation
for `post()` included a nonexistent kwarg, `headers`)
Changes between 6.5.0 and 6.5.1
===============================
Module changes
--------------
* A module to track users' pronouns is added
* A few bug and regression fixes
Changes between 6.4.0 and 6.5.0
===============================
Module changes
--------------
* xkcd module can now recognize xkcd.com urls
* SSL is verified for HTTP requests when not turned off in the config
* The command list is placed in a gist, to prevent flooding
* Title finding uses a custom user-agent, to prevent issues with some sites
Core changes
------------
* Intent handling is improved
API changes
-----------
* A `@url` decorator is added to simplify URL handling
Changes between 6.3.1 and 6.4.0
===============================
Module changes
--------------
* For some subreddits where NSFW is used to mark spoilers, an appropriate tag is
shown.
* `.ddg` avoids giving ad results.
* `.wa` is fully removed
* See [`sopel-modules.wolfram`][pypi-wolfram] on PyPI for a replacement
[pypi-wolfram]: https://pypi.org/project/sopel-modules.wolfram/
Core changes
------------
* Support for authenticating with Quakenet's Q is added.
* Errors from empty PID files are fixed.
* Issues with errors not being logged to the logging channel are fixed.
* Topic tracking is improved
* `extended-join` is supported properly
* Error messages being reported to the triggering channel/user can be disabled.
API changes
-----------
* Channel privileges are no longer checked in private messages.
* Rate limiting can now be done by channel and globally, not just per user.
Changes between 6.3.0 and 6.3.1
===============================
Module changes
--------------
* The xkcd module is working again
* Fix an issue causing Unicode errors to show for some URLs when using Python 2
(but you should really switch to 3!)
Core changes
------------
* Fix a bug in QUIT message parsing which caused certain users to be flooded
with PMs if their nick matched the first word of a user's QUIT message (such
as "disconnected" or "ping")
* Fix a rare Python 3 incompatibility bug when quitting due to too many core
errors
* We no longer show a warning when detecting a non-Unicode system locale if
you're still using Python 2
Changes between 6.2.0 and 6.3.0
===============================
Module changes
--------------
* Many modules ported to use `requests` package for stability and security
* Weather location lookup is fixed
* Confusing and unnecessary commands like .op were removed
* Splitting of options in `.choice` is now more intuitive
* Some edge cases in reddit post information were fixed
Core changes
------------
* A check is added to warn about an obscure environment issue that can cause
strange errors
* Regex characters in the bot's nick no longer cause issues when a rule has the
nickname added
* Rate limiting is tweaked slightly, which should reduce the severity of the
`.commands` flood bug until a proper solution is found
API changes
-----------
* The current topic of a channel is now available as the `Channel` object's
`topic` attribute
* `sopel.web` has been reworked as a wrapper around requests; it remains
deprecated
Changes between 6.1.1 and 6.2.0
===============================
Module changes
--------------
* An error in excluding URLs from title display is fixed
* Case sensitivity issues in currency and dice commands are fixed
* Guards to require channel or private message are added to a number of
commands, to avoid confusing errors
* A calculation bug in the countdown command is fixed
* Misc. minor bugfixes and improvements
Core changes
------------
* An occasional error with SSL connections on Python 3 is fixed
* On servers which support IRCv3 account extensions, the services account name
can be used to authenticate the owner
* Numerous additional IRCv3 features are supported
API changes
-----------
* `bot.privileges` is now deprecated in favor of `bot.channels`
* `bot.channels` contains more information about the channels the bot is in
* `bot.users` is now available with information about the users Sopel is aware
of
* `sopel.web` is now deprecated in favor of the third-party `requests` library
* `trigger.time` is added with the current time, or server-time if the server
supports it
* `sopel.tools.events` is now available as an enum of IRC numeric replies
Changes between 6.1.0 and 6.1.1
===============================
If you are updating from a pre-6.0 version (i.e. Willie), there are backwards-
incompatible changes which you should be aware of. See
<https://sopel.chat/willie_6.html> for more information.
----
Core changes
------------
* A regression which caused the config wizard to be unusable is fixed
Changes between 6.0.0 and 6.1.0
===============================
If you are updating from a pre-6.0 version (i.e. Willie), there are backwards-
incompatible changes which you should be aware of. See
<https://sopel.chat/willie_6.html> for more information.
----
Module changes
--------------
* A regression which prevented the URL safety detection from working is fixed.
* Issues with some special characters in DuckDuckGo searches are fixed
* `lxml` is no longer required by any modules, greatly simplifying the install
process
* Misc. minor bugfixes and improvements
Core changes
------------
* A regression which disabled blocking functionality is fixed
* Examples are no longer mangled by the `.help` command, and show the correct
prefix
* The listing from `.commands` is now separated by module
* Issues with reloading folder modules are fixed
API changes
-----------
* `ListAttribute` configs can be set to a list or set, with the same effect
* The configure method of validated config attributes now takes the parent config and section name
Changes between 5.5.1 and 6.0.0
===============================
This release contains backwards-incompatible changes. See
<https://sopel.chat/willie_6.html> for more information.
This is the first release in which the bot will have a new name. Current
tentative name is Sopel.
----
Module changes
--------------
* chanlogs, rss, github, and radio modules are removed
* Default in admin module is now to join on invite from anyone; the old default
of only joining on invite from admins can be configured
* Wikipedia module's per-channel default language configuration is deprecated;
a database-backed option will be added in a future version
* `.seen` replies on action messages now display action messages differently
* `.kick` no longer truncates the message, and `.kickban` works properly
Core changes
------------
* Deprecated login configs have been removed in favor of the new `auth_*` values
* Module reloading has been redone to enable modules to be installed from PyPI
* IRCv3 capability negotiation is updated for v3.2
API changes
-----------
* Configuration has been entirely reworked. Old wizard functions and the
`get_list()` function are removed, but most other uses of the config should
continue to work.
* The reorganization of `willie.tools` introduced in 5.3.0 is finalized; the old
import locations no longer work.
* `bot.msg` is deprecated in favor of `bot.say`, which can now be used in
un-triggered contexts with an additional `recipient` argument
Changes between 5.5.0 and 5.5.1
===============================
This release continues preparations for Willie 6. See
<https://sopel.chat/willie_6.html>
----
Module changes
--------------
* The URL safety module correctly checks URLs
* The URL for the service used for `.py` and `.wa` is updated
Changes between 5.4.1 and 5.5.0
===============================
This release starts preparations for Willie 6. See
<https://sopel.chat/willie_6.html>
----
API changes
-----------
* The ability to import from the `sopel` package, rather than `willie`, is added
to enable forward compatibility with the rename in 6.0
* A `version_info` tuple, similar to Python's own `sys.version_info`, is added
* An error when setting a validated config attribute to `None` is fixed
Changes between 5.4.0 and 5.4.1
===============================
This release starts preparations for Willie 6. See
<https://sopel.chat/willie_6.html>
----
Core changes
------------
* Regression which prevented SSL verification from being disabled is fixed
Changes between 5.3.0 and 5.4.0
===============================
This release starts preparations for Willie 6. See
<https://sopel.chat/willie_6.html>
----
Module changes
--------------
* Dropping the lowest results from `.dice` rolls works properly
* `.blocks` listing is now on one line
* HTML entities in reddit post titles are now displayed correctly
Core changes
------------
* DB nick group merging now works properly
* A few combinations of authentication configuration that were broken are fixed
API changes
-----------
* The core config section now uses a 6.0-style config definition. Deprecated
attributes will give a warning.
* Accessing core config values directly from the `config` object itself (rather
than `config.core`) now appropriately prints a warning
* `@require_chanmsg` now works properly
Changes between 5.2.0 and 5.3.0
===============================
Module changes
--------------
* The YouTube module is removed due to breakage of its API by Google
* Fixes for Unicode in channel logging
* `.py` hits an updated service running Python 2.7, rather than 2.5
* Multiple new features are added in the reddit module
* Wind direction arrows in weather now point the right way
API changes
-----------
* Time and calculation tools are split out into multiple modules. The moved
things will also be available in `tools` itself until 6.0, whereupon they will
only be available in their new locations.
* Functions and classes used internally for scheduling jobs are moved. They are
still available in their old location, but are no longer documented and will
not be considered part of the public API in 6.0.
Changes between 5.1.1 and 5.2.0
===============================
Module changes
--------------
* An exception that failed the chanlogs module from loading is fixed
* Meetbot meeting subjects no longer fail with Unicode
Core changes
------------
* The various ways of authenticating the bot are now configured using the same
set of attributes. The old settings will be used as fallback until 6.0.0.
API changes
-----------
* Privilege decorators no longer cause an error when no message is given
* A new `@intent` decorator is added as a shortcut for triggering on a message
with an intent
Changes between 5.0.0 and 5.1.1
===============================
Module changes
--------------
* Fixed a regression that caused getting weather for a nick to fail
* Bugs related to channel log filenames are fixed
* Channel logs can now use the bot's preferred time zone
* Getter and setter methods for timezone and format are more consistently named
* `.seen` persists across bot restarts
* `.seen` no longer shows message or channel unless used within the same channel
* Special characters in Wikipedia URLs are handled correctly
Core changes
------------
* `help_prefix` can now be given in `[core]` to change the command prefix used
in help
API changes
-----------
* The `Trigger` object is now immutable, as expected
* New decorators for checking privileges on callables are added
Changes between 4.6.2 and 5.0.0
===============================
This release contains backwards-incompatible changes. See
<https://sopel.chat/willie_5.html> for more information.
----
Module changes
--------------
* YouTube no longer shows bizarre lengths when the bot is running under Python 3
* When Wikipedia links are posted, a snippet of the article is shown
Core changes
------------
* `WillieDB` is entirely rewritten, meaning migration will be needed to access
old data
* Logging output to the debug channel is improved
* The name of the NickServ user can be configured with `nickserv_name` in
`[core]`
* SSL is disabled on Python 2.7 when `backports.ssl_match_hostname` is not
installed
API changes
-----------
* Deprecated `WillieDB` functions are removed
* CTCP actions are stripped prior to matching, and added to the `'intent'` key
of `trigger.tags`
* Deprecated `Trigger` functions are removed
* `bot.debug` is removed, in favor of standard Python logging
* `tools.Nick` is removed, in favor of the `tools.Identifier` introduced in
4.6.0
Changes between 4.6.1 and 4.6.2
===============================
This release starts preparations for Willie 5. See
<https://sopel.chat/willie_5.html> for more information.
----
Module changes
--------------
* Due to API deprecation and instability, `.g` now uses DuckDuckGo instead of
Google
Core changes
------------
* Fix remaining regression in db update function
Changes between 4.6.0 and 4.6.1
===============================
This release starts preparations for Willie 5. See
<https://sopel.chat/willie_5.html> for more information.
----
Module changes
--------------
* Fix regression in table creations and erroneously changed column names
Core changes
------------
* Fix regression in db update function
API changes
-----------
* Correctly print out deprecation warnings
Changes between 4.5.1 and 4.6.0
===============================
This release starts preparations for Willie 5. See
<https://sopel.chat/willie_5.html> for more information.
----
Module changes
--------------
* The `^` operator in `.calc` is now equivalent to `**`
* `.dice`, `.tr`, and `.addtrace` give meaningful errors when no argument is
given
* A number of database issues were fixed (more will be fixed in Willie 5)
* A number of Python 3-related issues were fixed.
* Malicious URLs are now detected with VirusTotal and malwaredomains
* `.weather` no longer shows pressure
Core changes
------------
* The config wizard no longer configures the database, instead automatically
creating a SQLite DB
* MySQL and Postgres databases are deprecated; only SQLite will be supported in
Willie 5
* Logging channel and level can be configured with `logging_channel` and
`logging_level` in the config
* A `--version` switch was added to the `willie` command, to show the version
in use
* Corrupt PID files will no longer prevent the bot from starting
* Non-ASCII values no longer crash the config wizard
API changes
-----------
* Numerous functions were added to the db to ease the transition to Willie 5
* `tools.Nick` has been renamed to `tools.Identifier`. `Nick` will be removed in
Willie 5
* `willie.web` functions now specify a meaningful default user agent
* `web.post` now supports dicts as the payload, and can optionally return
headers
* `config.get` was added as an alias to `config.parser.get`
* Callables can now handle more than one event by stacking decorators
Changes between 4.5.0 and 4.5.1
===============================
Module changes
--------------
* Version checking module no longer causes an error at startup
* URL handling modules no longer repeat themselves after being reloaded
* `.isup` now adds a `.com` TLD if none is used
* IPython integration now works with older versions of IPython
Changes between 4.4.1 and 4.5.0
===============================
Module changes
--------------
* Willie will now alert the owner at startup, and every 24 hours, when a new
version is available
* `.calc` will now time out on excessively long calculations, and is less likely
to error out
* `.help` now works properly for command aliases
* `.help` will now output multi-line help in multiple messages, rather than all
at once
* A new `.uptime` command tells how long the bot has been running
* `.length` can now handle astronomical units
* Absolute vote counts are no longer shown in reddit output
* Using `.setlocation` without a location will no longer set your location to
Italy
* Time units for `.in` are now case-insensitive
* `.duck` no longer gives a long, unrelated URL
Core changes
------------
* Scheduled tasks now work properly under Python 3
* Willie no longer accepts partial matches for admin status
API changes
-----------
* Setting attributes on the bot object now works as expected
* The status code is now returned from `web.get` as `_http_status` in the
headers
* `web.get` now attempts to decode based on headers, rather than assuming utf-8
* `web.iri_to_uri` is now available to decode internationalized domain names
* A `willie.formatting` module is now available to simplify IRC bold, underline
and color formatting
Changes between 4.4.0 and 4.4.1
===============================
Module changes
--------------
* RSS no longer checks for malformed XML
* Starting RSS manually after bot restart is no longer needed
* Youtube video search properly handles spaces
* The `.at` command defaults to UTC if user's timezone is not set
Core changes
------------
* Ping timeout handling is working again
* `bind_host` configuration option is working again
Changes between 4.3.0 and 4.4.0
===============================
Module changes
--------------
* `.cur` behaves better when bad arguments are given
* Fixed numerous Unicode errors
* Added a command to open an IPython console within the module context
* Added mass units and millimeters to .cur
* GitHub pull requests now get extended URL info
* `.weather` now displays wind in m/s instead of kts
* A security issue involving improperly named channel logs was fixed
* Misc. bugfixes
Core changes
------------
* Channel joins at bot startup can be rate limited with the `throttle_joins`
option in the `[core]` config section to work around server limits
* Added the ability for SASL login where the nickname and username are different
* Improved loop protection and rate limiting
* Fixed multiple Python 3 errors
* Enable logging the bot in to Authserv at startup
* Added support for Postgres as the database backend
* SSL cert location detection now works on Debian-based systems
* Misc. bugfixes
API changes
-----------
* Unicode in command decorators now works properly
* `web.get` now decodes the result from UTF-8, with a `dont_decode` argument to
disable
Changes between 4.2.0 and 4.3.0
===============================
Module changes
--------------
* A new channel logging module is added
* Misc. bugfixes, especially when running with Python 3
Core changes
------------
* Fixed a regression that caused numerous errors in `willie.web`
* Misc. bugfixes
API changes
-----------
* Nick instances now have an `is_nick` attribute, which is `True` when the value
is a valid nickname (as opposed to a channel)
Changes between 4.1.0 and 4.2.0
===============================
Module changes