geotim90 / geobot Goto Github PK
View Code? Open in Web Editor NEWGuild activity monitor
License: Apache License 2.0
Guild activity monitor
License: Apache License 2.0
If Geobot cannot send messages in a given channel, it should not execute any commands either.
Add a config option to force the bot to only respond to the bot admin. This way the prod and dev versions of the bot can run side-by-side without affecting normal users.
If the contents of the report is too long, not all important information is visible. Geobot needs to either send multiple messages or offer a way to execute each of the four reports separately.
Contributed is not a timestamp and should just show an emoji tick or cross.
The bot does not initialise the "joined" value when a role is added to "initiate".
The bot does not initialise the "joined" value when a matching role is assigned to a (new) member.
2019-02-15T23:03:22.237Z [COMMAND] {guild=339376682274127874|message=54610426143
2442892} "report"
/home/geobot/geobot/index.js:291
report4 += `\nโ **${getName(member)}** (${member.id}) Joined: ${formatDaysAgo(joined)}`
^
ReferenceError: joined is not defined
at doReport (/home/geobot/geobot/index.js:291:99)
at onReport (/home/geobot/geobot/index.js:213:9)
at Client.onMessage (/home/geobot/geobot/index.js:83:17)
at Client.emit (events.js:197:13)
at MessageCreateHandler.handle (/home/geobot/geobot/node_modules/discord.js/src/client/websocket/packets/handlers/MessageCreate.js:9:34)
at WebSocketPacketManager.handle (/home/geobot/geobot/node_modules/discord.js/src/client/websocket/packets/WebSocketPacketManager.js:103:65)
at WebSocketConnection.onPacket (/home/geobot/geobot/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:333:35)
at WebSocketConnection.onMessage (/home/geobot/geobot/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:296:17)
at WebSocket.onMessage (/home/geobot/geobot/node_modules/ws/lib/event-target.js:120:16)
at WebSocket.emit (events.js:197:13)
Moca requested the ability to add notes per guild member that would only be available to mods and admins. This is a first second third draft of a concept for this feature.
Mods and admins can add notes on individual guild members. A note is either public, shared or private. Public and shared notes are visible to all mods and admins, but only public notes appear in a user report. Private notes are only visible to the author (via DM). Only the author of a note or an admin (in case of public or shared notes) can delete an existing note.
Each note can be up to 100 characters long. Each author can store a maximum of 10 notes per guild member. The maximum number of public and shared notes per guild member is 10 each.
Each note is stored as a part of the data of a guild member in the database together with a reference to the author and the message ID and timestamp of when the note was added. All this information should be output when displaying the notes for a guild member.
Public notes will be included in report username
. Public and shared notes will be output as a response to a get member public note
or get member shared note
command. Private notes will be DM-ed to the author upon a get member private note
command.
@Geobot add member shared note Alice requested extended leave until June
adds a shared note for "Alice" with the text "extended leave until June"@Geobot add member private note Bob likes unicorns
adds a private note for "Bob" with the text "likes unicorns"@Geobot add member public note Dave aka. David
add a public not for "Dave" with the text "aka. David"@Geobot get member shared note Alice
outputs all shared notes stored for "Alice"@Geobot get member private note Bob
DMs all private notes stored for "Bob" by the author@Geobot get member public note Dave
outputs all public notes stored for "Dave"@Geobot get all shared note leave
outputs all shared notes containing the term "leave" in the text@Geobot get all private note unicorn
DMs all private notes by the author containing the term "unicorn" in the text@Geobot get all public note aka
outputs all private notes by the author containing the term "aka" in the text@Geobot remove member shared note Alice 266241948824764416
deletes the shared note for "Alice" with the matching ID or timestampThe "joined" information for inactive guild members in the guild report is not very helpful. The report should provide an overview of the member activity.
For the "Members that are completely inactive" section, the report should include the most recent activity.
For the "Members that are partially inactive" section, the report should include the least recent activity.
The start script should check if a log file already exists. If this is the case, it should gzip it and rename it with the current date and time in the file name.
If a mod attempts to execute an admin command, Geobot should respond with a permission error message instead of the "passive aggressive" help command response.
If "lastOnline", "lastMessage" or "lastPlayed" for a given member is "undefined", then report
will not consider this member as "inactive".
README.md
has a very technical view on the features of the bot. It may help having actual user manuals for mods and admins.
Check occurrences of :head_bandage: in the code
discord.js
and node.js
are fine and all, however the lack of a strongly typed language is hurting development. I should migrate the bot to a Java stack (since this is the language and technology I am most familiar with).
Since a member can hardly post a message if they were really offline, lastOnline
should always be updated together with lastMessage
.
For whatever reason the bot fails to updated "lastOnline" for members.
All "get" commands that contain information visible in the reports should be accessible to users with a mod role.
Apparently role IDs within a guild can change. These changes need to be taken into account by the bot!
Geobot has been integrated into https://github.com/geotim90/Nevini and is no longer maintained as a node.js application.
Discord has a 2000 character message limit. I will need to implement some kind of paging for this to work.
Geobot should accept a parameter in the help command and give instructions on how to use said command or feature.
E.g. @Geobot help roles
-> how roles work
E.g. @Geobot help set role
-> how the set role
command works
Of course, only features the author has permissions for should be explained. Otherwise the bot should point out the missing permissions. Nevertheless, help
will only work for mods and admins.
[ERROR] Invalid Form Body
content: Must be 2000 or fewer in length.
Results should be abbreviated if too long.
The question mark icons in individual reports make little sense. Even if a guild member is not a "member" by role, the activity timeouts should still work the same as if they were, for the purposes of an individual report only. The guild report should still take roles into account.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.