Compare commits
No commits in common. "main" and "master" have entirely different histories.
5 changed files with 25 additions and 25 deletions
|
@ -41,7 +41,7 @@ You can use the content of the *mastodon-bot* directory to create your own Masto
|
|||
|
||||
# License
|
||||
|
||||
Copyright 2003-2021 Davide Alberani <da@mimante.net>
|
||||
Copyright 2003-2021 Davide Alberani <da@erlug.linux.it>
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
FROM alpine
|
||||
LABEL \
|
||||
maintainer="Davide Alberani <da@mimante.net>"
|
||||
maintainer="Davide Alberani <da@erlug.linux.it>"
|
||||
|
||||
RUN \
|
||||
apk add --no-cache git fortune python3 py3-pip py3-cffi py3-six py3-requests py3-cryptography && \
|
||||
pip3 install --break-system-packages Mastodon.py && \
|
||||
apk add --no-cache git fortune python3 py3-cffi py3-six py3-requests py3-cryptography && \
|
||||
pip3 install Mastodon.py && \
|
||||
cd / && \
|
||||
git clone https://github.com/alberanid/fortunes-spam.git
|
||||
COPY fortunes-spam-bot.py /fortunes-spam
|
||||
|
|
|
@ -6,6 +6,9 @@ import sys
|
|||
import subprocess
|
||||
from mastodon import Mastodon
|
||||
|
||||
API_URL = 'https://botsin.space/'
|
||||
|
||||
|
||||
def getSpam(sections=('spam-o', 'spam-ita-o')):
|
||||
cmd = ['fortune', '-o', *sections]
|
||||
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
|
@ -23,10 +26,10 @@ def getSpam(sections=('spam-o', 'spam-ita-o')):
|
|||
return stdout
|
||||
|
||||
|
||||
def serve(api_url, token):
|
||||
def serve(token):
|
||||
spam = getSpam()
|
||||
print('serving:\n%s' % spam)
|
||||
mastodon = Mastodon(access_token=token, api_base_url=api_url)
|
||||
mastodon = Mastodon(access_token=token, api_base_url=API_URL)
|
||||
mastodon.status_post(spam, sensitive=True, spoiler_text='NSFW')
|
||||
|
||||
|
||||
|
@ -34,7 +37,4 @@ if __name__ == '__main__':
|
|||
if 'SPAMBOT_TOKEN' not in os.environ:
|
||||
print("Please specify the Mastodon token in the SPAMBOT_TOKEN environment variable")
|
||||
sys.exit(1)
|
||||
if 'API_URL' not in os.environ:
|
||||
print("Please specify the Mastodon server in the API_URL environment variable")
|
||||
sys.exit(1)
|
||||
serve(api_url=os.environ['API_URL'], token=os.environ['SPAMBOT_TOKEN'])
|
||||
serve(token=os.environ['SPAMBOT_TOKEN'])
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
FROM alpine
|
||||
LABEL \
|
||||
maintainer="Davide Alberani <da@mimante.net>"
|
||||
maintainer="Davide Alberani <da@erlug.linux.it>"
|
||||
|
||||
RUN \
|
||||
apk add --no-cache git fortune python3 py3-cffi py3-six py3-requests py3-cryptography py3-pip && \
|
||||
pip3 install --break-system-packages python-telegram-bot && \
|
||||
pip3 install python-telegram-bot && \
|
||||
cd / && \
|
||||
git clone https://github.com/alberanid/fortunes-spam.git
|
||||
COPY fortunes-spam-bot.py /fortunes-spam
|
||||
|
|
|
@ -4,14 +4,13 @@
|
|||
Build it with: docker build -t fortunes-spam-bot .
|
||||
Run it with something like: docker run -ti --rm -e SPAMBOT_TOKEN=your-telegram-token fortunes-spam-bot
|
||||
|
||||
Copyright 2018-2025 Davide Alberani <da@mimante.net> Apache 2.0 license
|
||||
Copyright 2018-2021 Davide Alberani <da@erlug.linux.it> Apache 2.0 license
|
||||
"""
|
||||
|
||||
import os
|
||||
import logging
|
||||
import subprocess
|
||||
from telegram import Update
|
||||
from telegram.ext import Application, CommandHandler
|
||||
from telegram.ext import Updater, CommandHandler
|
||||
|
||||
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
|
||||
level=logging.INFO)
|
||||
|
@ -30,7 +29,7 @@ def getSpam(section):
|
|||
try:
|
||||
stdout = stdout.strip()
|
||||
stdout = stdout.decode('utf8')
|
||||
except Exception:
|
||||
except:
|
||||
return 'uh-oh: something was wrong with the encoding of the can\'s label; try again'
|
||||
if process.returncode != 0:
|
||||
return 'something terrible is happening: exit code: %s, stderr: %s' % (
|
||||
|
@ -40,10 +39,10 @@ def getSpam(section):
|
|||
return stdout
|
||||
|
||||
|
||||
async def serve(section, update, context):
|
||||
def serve(section, update, context):
|
||||
spam = getSpam(section)
|
||||
logging.info('%s wants some spam; serving:\n%s' % (update.effective_user.username, spam))
|
||||
await update.message.reply_text(spam)
|
||||
update.message.reply_text(spam)
|
||||
|
||||
|
||||
def en(update, context):
|
||||
|
@ -54,17 +53,18 @@ def it(update, context):
|
|||
return serve('spam-ita-o', update, context)
|
||||
|
||||
|
||||
async def about(update, context):
|
||||
def about(update, context):
|
||||
logging.info('%s required more info' % update.effective_user.username)
|
||||
await update.message.reply_text('See https://github.com/alberanid/fortunes-spam')
|
||||
update.message.reply_text('See https://github.com/alberanid/fortunes-spam')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
if 'SPAMBOT_TOKEN' not in os.environ:
|
||||
print("Please specify the Telegram token in the SPAMBOT_TOKEN environment variable")
|
||||
logging.info('start serving delicious spam')
|
||||
application = Application.builder().token(os.environ['SPAMBOT_TOKEN']).build()
|
||||
application.add_handler(CommandHandler('en', en))
|
||||
application.add_handler(CommandHandler('it', it))
|
||||
application.add_handler(CommandHandler('about', about))
|
||||
application.run_polling(allowed_updates=Update.ALL_TYPES)
|
||||
updater = Updater(os.environ['SPAMBOT_TOKEN'])
|
||||
updater.dispatcher.add_handler(CommandHandler('en', en))
|
||||
updater.dispatcher.add_handler(CommandHandler('it', it))
|
||||
updater.dispatcher.add_handler(CommandHandler('about', about))
|
||||
updater.start_polling()
|
||||
updater.idle()
|
||||
|
|
Loading…
Reference in a new issue