ticketfrei/README.md

66 lines
3.4 KiB
Markdown
Raw Normal View History

2017-06-17 12:57:43 +00:00
# Ticketfrei micro messaging bot
<!-- This mastodon/twitter bot has one purpose - breaking the law. -->
The functionality is simple: it retweets every tweet where it is mentioned.
This leads to a community which evolves around it; if you see ticket controllers, you tweet their location and mention the bot. The bot then retweets your tweet and others can read the info and think twice if they want to buy a ticket. If enough people, a critical mass, participate for the bot to become reliable, you have positive self-reinforcing dynamics.
There is one security hole: people could start mentioning the bot with useless information, turning it into a spammer. That's why it has to be maintained; if someone spams the bot, mute them and undo the retweet. So it won't retweet their future tweets and the useless retweet is deleted if someone tries to check if something was retweeted in the last hour or something.
# Install
Install python3 with your favourite package manager.
Create and activate virtualenv
```shell
$ virtualenv -p python3 .
$ . bin/activate
```
Install dependencies
```shell
2017-07-11 18:49:36 +00:00
$ pip3 install Mastodon.py pytoml
2017-06-17 20:19:15 +00:00
$ pip install python-twitter pytoml requests
2017-06-17 12:57:43 +00:00
```
2017-06-17 22:35:34 +00:00
Configure
```shell
$ cp ticketfrei.cfg.example ticketfrei.cfg
$ vim ticketfrei.cfg
```
Edit the account credentials, so your bot can use your accounts.
2017-06-17 23:44:22 +00:00
Also add the words to the goodlist, which you want to require. A tweet is only retweeted, if it contains at least one of them. If you want to RT everything, just add your account name.
There is also a blacklist, which you can use to automatically sort out malicious tweets. Be careful though, our filter can't read the intention with which a word was used. Maybe you wanted it there.
Note that atm the good- & blacklist are still outside of ticketfrei.cfg, in separate files. we will repare this soon.
2017-06-17 12:57:43 +00:00
## ideas
* You can only use the twitter API if you have confirmed a phone number and sacrificed a penguin in a blood ritual. So we should build it in a way that it uses the twitter web GUI. It's difficult, but maybe it works. We had another twitter bot that worked similarly, years ago: https://github.com/b3yond/twitter-bot
* Make it for mastodon instead of twitter. Mastodon has an open API, that's way more fun. Also mastodon may profit from the network effects though it may be hard to reach the critical mass if you can only use mastodon users.
* Bridge to mastodon, so people can use both platforms. Easier to reach the critical mass. But could be hard to do without the twitter API.
* Build a tool that deletes wrong toots/tweets on both platforms, would work nicely with a web UI.
* write the muted people to the db, to easily undo the mutes if necessary.
## to do
Desktop/pycharm-community-2017.1.4/bin/pycharm.sh
2017-06-17 17:04:51 +00:00
- [x] Twitter: Crawl mentions
2017-06-17 18:36:30 +00:00
- [x] Mastodon: Crawl mentions
2017-06-23 20:09:56 +00:00
- [ ] Write toots/tweets to database/log
2017-06-17 17:04:51 +00:00
- [x] Twitter: retweet people
2017-06-17 18:36:30 +00:00
- [x] Mastodon: boost people
2017-06-23 20:09:56 +00:00
<!--
2017-06-17 12:57:43 +00:00
- [ ] Mastodon: toot who has been retweeted on twitter
- [ ] Twitter: tweet who has been boosted on mastodon
2017-06-23 20:09:56 +00:00
-->
- [x] Twitter: access the API
2017-06-17 12:57:43 +00:00
- [ ] Web UI that lets you easily delete toots/tweets per db id and mute the tweet author
2017-06-17 18:36:30 +00:00
- [x] Write Bots as Classes to be easier implemented
2017-06-17 20:19:15 +00:00
- [x] Create extra Class for the filter
2017-06-17 23:38:19 +00:00
- [ ] Put as much as possible into ticketfrei.cfg
- [ ] Make both bots run on their own *and* next to each other
2017-06-23 20:09:56 +00:00
- [ ] implement trigger class in retootbot
- [ ] read config in retweetbot
2017-07-11 18:49:36 +00:00
- [ ] put shutdown contact in ticketfrei.cfg