first commit
This commit is contained in:
39
bot.py
Normal file
39
bot.py
Normal file
@@ -0,0 +1,39 @@
|
||||
import discord
|
||||
from discord.ext import commands
|
||||
import re
|
||||
import os
|
||||
|
||||
# Set up intents explicitly
|
||||
intents = discord.Intents.default()
|
||||
intents.message_content = True # Enable message content access
|
||||
|
||||
# Set up the bot
|
||||
bot = commands.Bot(command_prefix='!', intents=intents)
|
||||
|
||||
# Event: Bot is ready and connected to Discord
|
||||
@bot.event
|
||||
async def on_ready():
|
||||
print(f'Logged in as {bot.user.name}')
|
||||
|
||||
# Event: Triggered when a message is sent in a channel the bot can see
|
||||
@bot.event
|
||||
async def on_message(message):
|
||||
# Ignore messages sent by the bot itself to prevent loops
|
||||
if message.author == bot.user:
|
||||
return
|
||||
# Check if the message contains "nixos" (case-insensitive, as a whole word)
|
||||
if re.search(r'\bnixos\b', message.content, re.IGNORECASE):
|
||||
# Replace "nixos" with "fagos" (preserving case of the first letter)
|
||||
new_content = re.sub(
|
||||
r'\b(nixos)\b',
|
||||
lambda m: 'Fagos' if m.group(1)[0].isupper() else 'fagos',
|
||||
message.content,
|
||||
flags=re.IGNORECASE
|
||||
)
|
||||
# Send the modified message
|
||||
await message.channel.send(f'{new_content}')
|
||||
# Allow other commands to process (if any)
|
||||
await bot.process_commands(message)
|
||||
|
||||
# Run the bot using the token from the environment variable
|
||||
bot.run(os.getenv('FAGOS_TOKEN'))
|
||||
25
flake.lock
generated
Normal file
25
flake.lock
generated
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"nodes": {
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1746904237,
|
||||
"narHash": "sha256-3e+AVBczosP5dCLQmMoMEogM57gmZ2qrVSrmq9aResQ=",
|
||||
"rev": "d89fc19e405cb2d55ce7cc114356846a0ee5e956",
|
||||
"revCount": 797896,
|
||||
"type": "tarball",
|
||||
"url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.797896%2Brev-d89fc19e405cb2d55ce7cc114356846a0ee5e956/0196c1a7-7ad3-74a9-9d50-1b854aca6d6c/source.tar.gz"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
"url": "https://flakehub.com/f/NixOS/nixpkgs/0.1"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
96
flake.nix
Normal file
96
flake.nix
Normal file
@@ -0,0 +1,96 @@
|
||||
{
|
||||
description = "A Nix-flake-based Python development environment for the Fagos Discord bot";
|
||||
inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1";
|
||||
outputs = inputs:
|
||||
let
|
||||
supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
|
||||
forEachSupportedSystem = f: inputs.nixpkgs.lib.genAttrs supportedSystems (system: f {
|
||||
pkgs = import inputs.nixpkgs { inherit system; };
|
||||
});
|
||||
version = "3.13";
|
||||
in
|
||||
{
|
||||
# Development shell for `nix develop`
|
||||
devShells = forEachSupportedSystem ({ pkgs }:
|
||||
let
|
||||
concatMajorMinor = v:
|
||||
pkgs.lib.pipe v [
|
||||
pkgs.lib.versions.splitVersion
|
||||
(pkgs.lib.sublist 0 2)
|
||||
pkgs.lib.concatStrings
|
||||
];
|
||||
python = pkgs."python${concatMajorMinor version}";
|
||||
in
|
||||
{
|
||||
default = pkgs.mkShell {
|
||||
venvDir = ".venv";
|
||||
postShellHook = ''
|
||||
venvVersionWarn() {
|
||||
local venvVersion
|
||||
venvVersion="$("$venvDir/bin/python" -c 'import platform; print(platform.python_version())')"
|
||||
[[ "$venvVersion" == "${python.version}" ]] && return
|
||||
cat <<EOF
|
||||
Warning: Python version mismatch: [$venvVersion (venv)] != [${python.version}]
|
||||
Delete '$venvDir' and reload to rebuild for version ${python.version}
|
||||
EOF
|
||||
}
|
||||
venvVersionWarn
|
||||
'';
|
||||
packages = with python.pkgs; [
|
||||
venvShellHook
|
||||
pip
|
||||
discordpy
|
||||
];
|
||||
};
|
||||
});
|
||||
|
||||
# Packages for `nix build`
|
||||
packages = forEachSupportedSystem ({ pkgs }:
|
||||
let
|
||||
concatMajorMinor = v:
|
||||
pkgs.lib.pipe v [
|
||||
pkgs.lib.versions.splitVersion
|
||||
(pkgs.lib.sublist 0 2)
|
||||
pkgs.lib.concatStrings
|
||||
];
|
||||
python = pkgs."python${concatMajorMinor version}";
|
||||
# Define the bot package using buildPythonApplication
|
||||
fagos = python.pkgs.buildPythonApplication {
|
||||
pname = "fagos";
|
||||
version = "0.1.0";
|
||||
src = ./.;
|
||||
format = "pyproject"; # Remove if no pyproject.toml
|
||||
nativeBuildInputs = with python.pkgs; [ setuptools ];
|
||||
propagatedBuildInputs = with python.pkgs; [ discordpy ];
|
||||
doCheck = false;
|
||||
};
|
||||
in
|
||||
{
|
||||
default = fagos;
|
||||
});
|
||||
|
||||
# Apps for `nix run`
|
||||
apps = forEachSupportedSystem ({ pkgs }:
|
||||
let
|
||||
concatMajorMinor = v:
|
||||
pkgs.lib.pipe v [
|
||||
pkgs.lib.versions.splitVersion
|
||||
(pkgs.lib.sublist 0 2)
|
||||
pkgs.lib.concatStrings
|
||||
];
|
||||
python = pkgs."python${concatMajorMinor version}";
|
||||
# Create a Python environment with discordpy
|
||||
myPython = python.withPackages (ps: with ps; [ discordpy ]);
|
||||
# Create a shell script to run bot.py
|
||||
fagosApp = pkgs.writeShellScriptBin "fagos" ''
|
||||
exec ${myPython}/bin/python ${./bot.py} "$@"
|
||||
'';
|
||||
in
|
||||
{
|
||||
default = {
|
||||
type = "app";
|
||||
program = "${fagosApp}/bin/fagos";
|
||||
};
|
||||
});
|
||||
};
|
||||
}
|
||||
6
pyproject.toml
Normal file
6
pyproject.toml
Normal file
@@ -0,0 +1,6 @@
|
||||
[project]
|
||||
name = "fagos"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"discord.py>=2.0.0"
|
||||
]
|
||||
Reference in New Issue
Block a user