Compare commits

...

4 Commits

Author SHA1 Message Date
yen
9b626b45ed
new image push 2026-01-04 00:10:19 +01:00
yen
865b642ac9
fix 2025-04-13 11:37:48 +02:00
yen
5147a56672
use flake and direnv 2024-02-28 17:50:37 +01:00
yen
22d91491dc
nix instead of pip 2024-02-28 17:19:02 +01:00
7 changed files with 141 additions and 48 deletions

1
.envrc Normal file
View File

@ -0,0 +1 @@
use flake .

12
Pipfile
View File

@ -1,12 +0,0 @@
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true
[dev-packages]
[packages]
python-telegram-bot = "*"
[requires]
python_version = "3.8"

61
flake.lock generated Normal file
View File

@ -0,0 +1,61 @@
{
"nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1709126324,
"narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "d465f4819400de7c8d874d50b982301f28a84605",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1709101946,
"narHash": "sha256-TsySgcWm/GlbYdL3AEva49ceeI2BdPQ7muwfYNr1fwo=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "d53c2037394da6fe98decca417fc8fda64bf2443",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

27
flake.nix Normal file
View File

@ -0,0 +1,27 @@
{
description = "Python3 telegram bot environment";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils, ... }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs {
inherit system;
};
pythonEnv = pkgs.python3.withPackages (ps: with ps; [
python-telegram-bot
]);
in
{
devShells.default = pkgs.mkShell {
buildInputs = with pkgs; [
pythonEnv
];
};
});
}

32
push.sh
View File

@ -1 +1,31 @@
docker buildx build --platform linux/arm64 -t yen3k/sesh-secretary:1.0 --push --file Dockerfile .
#!/usr/bin/env bash
set -euo pipefail
DATE=$(date +%Y-%m-%d)
LOCAL_IMAGE="sesh-secretary"
PRIVATE_IMAGE="yenhub.yenting.dk/${LOCAL_IMAGE}"
DOCKERHUB_IMAGE="docker.io/yen3k/${LOCAL_IMAGE}"
# Build once (arm64)
podman buildx build \
--arch arm64 \
-t "${LOCAL_IMAGE}:${DATE}" \
-t "${LOCAL_IMAGE}:latest" \
-f Dockerfile .
# Tag for private registry
podman tag "${LOCAL_IMAGE}:${DATE}" "${PRIVATE_IMAGE}:${DATE}"
podman tag "${LOCAL_IMAGE}:latest" "${PRIVATE_IMAGE}:latest"
# Tag for Docker Hub
podman tag "${LOCAL_IMAGE}:${DATE}" "${DOCKERHUB_IMAGE}:${DATE}"
podman tag "${LOCAL_IMAGE}:latest" "${DOCKERHUB_IMAGE}:latest"
# Push to private registry
podman push "${PRIVATE_IMAGE}:${DATE}"
podman push "${PRIVATE_IMAGE}:latest"
# Push to Docker Hub
podman push "${DOCKERHUB_IMAGE}:${DATE}"
podman push "${DOCKERHUB_IMAGE}:latest"

View File

@ -1,16 +1 @@
#
# These requirements were autogenerated by pipenv
# To regenerate from the project's Pipfile, run:
#
# pipenv lock --requirements
#
-i https://pypi.org/simple
certifi==2020.6.20
cffi==1.14.2
cryptography==3.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
decorator==4.4.2
pycparser==2.20; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
python-telegram-bot==12.8
six==1.15.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
tornado==6.0.4; python_version >= '3.5'
python-telegram-bot==22.0

View File

@ -1,6 +1,7 @@
#!/usr/bin/python
from telegram.ext import Updater, CommandHandler, Filters
from telegram import Update
from telegram.ext import Application, CommandHandler, filters
import os
from random import randrange
import sys
@ -8,7 +9,8 @@ import sys
SAVED_PATH = '/var/lib/seshsecretary/saved.txt'
CHATIDS_PATH = '/var/lib/seshsecretary/chatids.txt'
def _list(update, context):
async def _list(update, context):
chat_id = update.effective_chat.id
if not check_chat_id(chat_id):
@ -19,11 +21,11 @@ def _list(update, context):
for line in f:
response += line.split()[0] + "\n"
if response == "":
context.bot.send_message(chat_id, "Ingen gemte beskeder :(", 'MARKDOWN')
await context.bot.send_message(chat_id, "Ingen gemte beskeder :(", 'MARKDOWN')
else:
context.bot.send_message(chat_id, response, 'MARKDOWN')
await context.bot.send_message(chat_id, response, 'MARKDOWN')
def random(update, context):
async def random(update, context):
chat_id = update.effective_chat.id
if not check_chat_id(chat_id):
@ -34,9 +36,9 @@ def random(update, context):
message = lines[randrange(len(lines))]
message_id = message.split()[1]
from_chat_id = message.split()[2]
context.bot.forward_message(chat_id, from_chat_id, message_id)
await context.bot.forward_message(chat_id, from_chat_id, message_id)
def get(update, context):
async def get(update, context):
chat_id = update.effective_chat.id
if not check_chat_id(chat_id):
@ -52,12 +54,12 @@ def get(update, context):
break
if message_id == "":
update.message.reply_text(
await update.message.reply_text(
"{} findes ik!".format(name))
else:
context.bot.forward_message(chat_id, from_chat_id, message_id)
await context.bot.forward_message(chat_id, from_chat_id, message_id)
def save(update, context):
async def save(update, context):
chat_id = update.effective_chat.id
if not check_chat_id(chat_id):
@ -74,9 +76,9 @@ def save(update, context):
if cont:
with open(SAVED_PATH, "a") as f:
f.write(name + " " + str(message_id) + " " + str(chat_id) + "\n")
update.message.reply_text(name + " er gemt!")
await update.message.reply_text(name + " er gemt!")
else:
update.message.reply_text(name + " findes allerede :(")
await update.message.reply_text(name + " findes allerede :(")
def main():
if not os.path.isfile(SAVED_PATH):
@ -88,15 +90,14 @@ def main():
if token is None:
sys.exit("Missing environment variable: SESHSECRETARY_TOKEN")
updater = Updater(token, use_context=True)
application = Application.builder().token(token).build()
updater.dispatcher.add_handler(CommandHandler("list", _list))
updater.dispatcher.add_handler(CommandHandler("get", get))
updater.dispatcher.add_handler(CommandHandler("random", random))
updater.dispatcher.add_handler(CommandHandler("save", save, Filters.reply))
application.add_handler(CommandHandler("list", _list))
application.add_handler(CommandHandler("get", get))
application.add_handler(CommandHandler("random", random))
application.add_handler(CommandHandler("save", save, filters.REPLY))
updater.start_polling()
updater.idle()
application.run_polling(allowed_updates=Update.ALL_TYPES)
def check_chat_id(chatid):
with open(CHATIDS_PATH) as f: