Releases: freiheit/discord_feedbot
Various bug fixes
Docker, stability, code cleanup
Thanks to @phroggster we have support for Docker. Check Docker.md for details.
Thanks to @jleclanche the code has been massively cleaned up and looks much nicer.
A small stability fix to help with feeds that sometimes get http errors.
The code looks very different, but really little functionally changed.
Bug Fixes, heroku, etc
Various small things:
- Added files for heroku support (still need to document install process)
- Added a
show_all_entries.py
script for when you need to look at more than just the latest entry in a feed. - Fixed a bug that prevented code blocks from working
- Extensive reformatting to match python style guidelines (autopep) better
- Documentation updates
Random startup skew time.
Added a random initial startup sleep to each feed, which defaults to a range between 0.1 and the feed's refresh time.
This is to resolve issues where startup hammered the internet connection with checking all the feeds at once, and especially issues where checking a bunch of feeds from the same site (reddit) would get that site to temporarily lock feedbot out.
Set to idle
Use the updated API stuff to also set the bot to "idle" status, to help give a hint that it won't reply to things (and because the color of the "idle" dot is close to the avatar I'm using for it)
Updates for latest discord.py API
Update discord.py for this version. Requires 0.13.0 or newer, but latest version is probably best way to go.
Nothing interesting
- Added a note in README that you don't have to run your own instance of this bot for simple Elite stuff.
- Made the error when running python older than 3.4 actually useful ("Needs python 3.4" not an error about "yield" syntax.)
Made "link" another "id" option.
We use "id" or "guid" to determine the unique id of a feed item (so that we don't repost, etc). I've now added "link" as a third option. This shouldn't affect any feed that works now (id and guid are preferred over link), but if those aren't present a feed wouldn't work at all, and now will work if there is a "link" field.
Feed examination helper tool
Manually examining what's in a feed to figure out available fields is a pain. The feedparser library also does some extra processing that can change the names of some fields and really keep you guessing. You could always turn up the debug levels, but that's also a bit of a pain. To help with this, I've added a helpful "show_sample_entry" tool that can help show you what fields are available to the bot.
Running it:
$ ./show_sample_entry.py https://github.com/freiheit/discord_feedbot/releases.atom
Sample output:
# We currently restrict this output to depth=1,
# because that's all the bot can currently handle.
# So, ignore those `[...]` and `{...}` structures and only look at 'strings'.
{ 'author': 'freiheit',
'author_detail': {...},
'authors': [...],
'content': [...],
'guidislink': True,
'href': '',
'id': 'tag:github.com,2008:Repository/50977510/v2.1.1',
'link': 'https://github.com/freiheit/discord_feedbot/releases/tag/v2.1.1',
'links': [...],
'media_thumbnail': [...],
'summary': "<p>Manually examining what's in a feed to figure out "
'available fields is a pain. The feedparser library also does '
# [ ... edited for length ...]
'<h3>Fields I can see are usable:</h3>\n'
'\n'
'<div class="highlight highlight-source-ini"><pre><span '
'class="pl-k">fields</span> = author, id, link, summary, '
'title, updated</pre></div>',
'title': 'Feed examination helper tool',
'title_detail': {...},
'updated': '2016-10-11T21:54:12Z',
'updated_parsed': time.struct_time(tm_year=2016, tm_mon=10, tm_mday=11, tm_hour=21, tm_min=54, tm_sec=12, tm_wday=1, tm_yday=285, tm_isdst=0)}
Fields I can see are usable:
fields = author, id, link, summary, title, updated
Release 2.1.0
Reverse the order that the bot examines an updated feed's items.
If you usually have only a single item show up at a time from most of your feeds, this change won't matter to you.
It's possible that this behavior change will be undesirable for some situations, hence the jump from 2.0.x to 2.1.
For github commit feeds it's common that there will be multiple new items in the feed and that the order is relevant (since it's common for several commits to be pushed in at one time). The bot was processing feeds from start to end of file, which means newest to oldest in most feeds, and therefore getting the order wrong on those feeds.
There may be other feeds where this is the case.