This commit is contained in:
2026-06-26 20:58:19 -04:00
commit 4682bc7fc8
7 changed files with 97 additions and 0 deletions
+2
View File
@@ -0,0 +1,2 @@
__pycache__
.env
+8
View File
@@ -0,0 +1,8 @@
FROM python:3.11-slim
WORKDIR /app
RUN apt-get update && apt-get install -y procps && rm -rf /var/lib/apt/lists/*
RUN apt-get update && apt-get install -y git
# ??
RUN git clone https://git.jackrabbits.gay/merrin/NFASBB.git NFASBB
COPY . .
CMD pip install --no-cache-dir -r NFASBB/requirements.txt && python NFASBB/main.py
+3
View File
@@ -0,0 +1,3 @@
# NoVA Furs Artists Suggestion Box Bot
Thank u [https://github.com/dzulldev/Menfess](https://github.com/dzulldev/Menfess)
+11
View File
@@ -0,0 +1,11 @@
from telegram import Update
async def start(update: Update, _):
await update.message.reply_text(
"Hi! Send your message and it will be posted anonymously."
)
async def healthcheck(update: Update, _):
await update.message.reply_text("NFASBB Bot Healthy!")
+41
View File
@@ -0,0 +1,41 @@
from telegram import Update
from telegram.ext import (
Application,
CommandHandler,
MessageHandler,
filters,
ContextTypes,
)
import os
from dotenv import load_dotenv
from utils import get_hashed_id, user_is_limited
from commands import start, healthcheck
load_dotenv()
TOKEN = os.getenv("BOT_TOKEN")
CHANNEL_ID = int(os.getenv("CHANNEL_ID"))
async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
user_id = str(update.effective_user.id)
hashed_id = get_hashed_id(user_id)
if user_is_limited(hashed_id):
await update.message.reply_text("You are timed out. Please try again later.")
return
message = update.message.text.strip()
await context.bot.send_message(chat_id=CHANNEL_ID, text=message)
await update.message.reply_text("Your message has been posted!")
def main():
app = Application.builder().token(TOKEN).build()
app.add_handler(CommandHandler("start", start))
app.add_handler(CommandHandler("health", healthcheck))
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_message))
print("Bot is running!")
app.run_polling()
if __name__ == "__main__":
main()
+2
View File
@@ -0,0 +1,2 @@
python-telegram-bot==22.8
python-dotenv==1.2.2
+30
View File
@@ -0,0 +1,30 @@
from collections import defaultdict
import time
import os
from dotenv import load_dotenv
import hashlib
load_dotenv()
MAX_REQUESTS_PER_HOUR = int(os.getenv("MAX_REQUESTS_PER_HOUR"))
user_requests = defaultdict(list)
def user_is_limited(hashed_id: str) -> bool:
current_time = time.time()
# Prune old requests (older than 1 hour)
user_requests[hashed_id] = [
ts for ts in user_requests[hashed_id] if current_time - ts < 3600
]
if len(user_requests[hashed_id]) >= MAX_REQUESTS_PER_HOUR:
return True
user_requests[hashed_id].append(current_time)
return False
def get_hashed_id(user_id: str) -> str:
daily_date = time.strftime("%Y-%m-%d")
combined = f"{user_id}{daily_date}"
return hashlib.sha256(combined.encode()).hexdigest()[:16]