Shoutbox

[REQ] People online - Printable Version

-Shoutbox (https://shoutbox.menthix.net)
+-- Forum: MsgHelp Archive (/forumdisplay.php?fid=58)
+--- Forum: Messenger Plus! for Live Messenger (/forumdisplay.php?fid=4)
+---- Forum: Scripting (/forumdisplay.php?fid=39)
+----- Forum: Plug-Ins (/forumdisplay.php?fid=28)
+------ Thread: [REQ] People online (/showthread.php?tid=54031)

[REQ] People online by huwnet on 12-18-2005 at 09:07 PM

Often people will ask me who is online on Messenger.

If would be nice if I could type something like:

/wonline <groupname>

and if would print the list renamed message plus contact list for the group.

Anyone like to make this? (A)


RE: [REQ] People online by J-Thread on 12-18-2005 at 10:10 PM

That's a really nice idea! It isn't even hard to make, let's not say it's easy...

I haven't got time for it to make, but I'm sure anyone else does. It would be a nice plugin(Y)


RE: [REQ] People online by Supersonicdarky on 12-18-2005 at 10:18 PM

i'd love that! I always have to type the people who are online, especially when u have about 30

So could someone make it?


RE: [REQ] People online by DJKAL on 12-18-2005 at 10:31 PM

yup agreed...a good plugin ida ;)


RE: [REQ] People online by Itsme-HcK on 12-19-2005 at 10:13 PM

Hmm, to push myself more to program something, I will put this on my to-do list too. :) (Just as the SendStatus thingy.)
I might even put them together.
Beta will be ready in two weeks.


RE: [REQ] People online by DJKAL on 12-19-2005 at 10:15 PM

quote:
Originally posted by Itsme-HcK
Beta will be ready in two weeks.

as a question ... would those of us who have ALREADY posted in this post be able to be BETA testers for you? :)
RE: [REQ] People online by CookieRevised on 12-19-2005 at 10:21 PM

Somebody is already busy with it
contact list plugin VB


RE: [REQ] People online by Itsme-HcK on 12-19-2005 at 10:27 PM

DJKAL: Sure, I'll make a new topic containing the Beta, so everyone can test it.

CookieRevised: For what I get of that topic, it's not the same.


RE: [REQ] People online by DJKAL on 12-19-2005 at 10:31 PM

cool...tha'd be great ...good luck with it (Y)


RE: RE: [REQ] People online by CookieRevised on 12-19-2005 at 10:44 PM

quote:
Originally posted by Itsme-HcK
CookieRevised: For what I get of that topic, it's not the same.
The topic doesn't say much. Read the thread ;) It is the same as far as I can decypher from the OP's request there. Also, Matty's code is exactly what is requested here.
RE: [REQ] People online by Itsme-HcK on 12-20-2005 at 07:23 PM

Not entirely.
And yes, I DID read it. ;x
I do not get it's purpose, for I can't understand the most of his English.
However, what I did get was something like another window with all online buddies in it. This will be something else. :)
My idea of this one is to SAY all online people, or the number, or some other information.


RE: [REQ] People online by CookieRevised on 12-20-2005 at 11:39 PM

quote:
Originally posted by Itsme-HcK
Not entirely.
However, what I did get was something like another window with all online buddies in it. This will be something else. :)
My idea of this one is to SAY all online people, or the number, or some other information.
That is exactly the same, only the output is different. The code shown by Matty is simply a quick example, but is also basically the whole plugin. What you do after you got your list with online buddies doesn't really matter, and isn't a big part of to the core of the plugin.

Matty simply added it to a listview for the sole purpose of keeping the code short and as a quick example; you can add the contact name to whatever you want; that doesn't matter to show how the plugin would work. The important part of the plugin is how to get them, which is exactly the same. In other words, simply change a line or two of that sample code and you have your plugin.
RE: RE: [REQ] People online by huwnet on 12-21-2005 at 03:35 PM

quote:
Originally posted by Itsme-HcK
Not entirely.
And yes, I DID read it. ;x
I do not get it's purpose, for I can't understand the most of his English.
However, what I did get was something like another window with all online buddies in it. This will be something else. :)
My idea of this one is to SAY all online people, or the number, or some other information.


Sorry for not making myself clear ;).

Looking forward to the beta
RE: [REQ] People online by DJKAL on 12-21-2005 at 04:06 PM

quote:
Originally posted by Itsme-HcK
Not entirely.
And yes, I DID read it. ;x
I do not get it's purpose, for I can't understand the most of his English.
However, what I did get was something like another window with all online buddies in it. This will be something else. :)
My idea of this one is to SAY all online people, or the number, or some other information.


what would be the use of this ..... you can show only online contacts in WLM 8.0 anyway
RE: [REQ] People online by haydos on 12-21-2005 at 04:18 PM

quote:
Originally posted by DJKAL
quote:
Originally posted by Itsme-HcK
Not entirely.
And yes, I DID read it. ;x
I do not get it's purpose, for I can't understand the most of his English.
However, what I did get was something like another window with all online buddies in it. This will be something else. :)
My idea of this one is to SAY all online people, or the number, or some other information.


what would be the use of this ..... you can show only online contacts in WLM 8.0 anyway
He is trying to say that you could show your online contacts from a specific group to a contact, not what the user will see in the contact list.

eg. (pretend the following is a conversation window:P)
My friend says:
hey who is online?
Me says:
"/xwonline <groupname>"
Of course, instead of /xwonline <groupname> appearing, all online contacts in the group would be displayed

ie. the final result would be
My friend says:
hey who is online?
Me says:
John
Bill
etc
etc
etc



RE: [REQ] People online by Itsme-HcK on 12-21-2005 at 10:02 PM

Finally someone who understands. :P
Exactly that it will be.
@CookieRevised: Never, I hate VB.
I will also include a status-"logger", with customisable URL to send to. :)


RE: [REQ] People online by Supersonicdarky on 12-21-2005 at 10:10 PM

you should add a feature to choose to send their emails/names/custom names

ex:
/xwonlinename <groupname>
or
/xwonlinecust <groupname>
or
/xwonlinemail <groupname>


RE: [REQ] People online by Itsme-HcK on 12-21-2005 at 10:31 PM

Already thought of that. :)
I'm thinking about something like this:
/xwonline [groupname] [required status] [mask]
(Things between [ and ] are optional.)
Groupname could be... (nothing for all groups)
Required status would be something like "status:online", "status:away", "status:other" or maybe even "status:boo".
Mask could be something like this: "On group $groupname$: $name$ ($email$). His current status: $status$". :)
Default will be something like that too, but without the e-mail.


RE: RE: [REQ] People online by CookieRevised on 12-22-2005 at 01:03 AM

quote:
Originally posted by Itsme-HcK
@CookieRevised: Never, I hate VB.
Ok, but that's another issue. Though the core of the program will exactly be the same as what is shown in that other thread.

quote:
Originally posted by Itsme-HcK
Already thought of that. :)
I'm thinking about something like this:
/xwonline [groupname] [required status] [mask]
(Things between [ and ] are optional.)
Groupname could be... (nothing for all groups)

Required status would be something like "status:online", "status:away", "status:other" or maybe even "status:boo".

Mask could be something like this: "On group $groupname$: $name$ ($email$). His current status: $status$". :)
Default will be something like that too, but without the e-mail.
If I may suggest something, do it in another way (which looks a bit more logical and above all more generic IMHO)

eg:
/xwhois [required status] [groupname] [mask]

Make status the first parameter, as this is a required parameter (can't be "nothing") and groupname and mask are optional. (required parameters always come before optional parameters)

This also reduces the need for the "status:" prefix. eg:

/xwhois online
/xwhois away <of the group> friends
(italic is imaginary of course; those are the words which makes the whole command into an logical english sentence)

Also, and what my main suggestion is, don't forget about the possebility you have with tags. A plugin can also output tags. With this the user has all the possebilities he whishes. And it doesn't require much from the plugin/programmer itself...

eg:
- (!XWHOIS_AWAY) will show everybody who is away in one string (seperated by whatever is set in the preferences of the plugin; by default a comma)
- (!XWHOIS_ONLINE_FRIENDS)

The user can make his own quicktext in that way. eg:
quicktext alias: /showbusyfamily
quicktext text: These are the ones from my family who are busy: (!XWHOIS_BUSY_FAMILY)

In fact you can program your plugin around this tag, and actually make the parsing of the command a kind of "special case" of that tag-use. eg:

The main routine is to parse the tag and is what the plugin is about: seperating the different fields inside the tag. Now you can make the routine for the command to actually call this same parsing tag routine (with the appropiate parameters). In other words, you only need to have 1 major parsing routine.


-------

Anyhow, that's how I would make it (in VB :P... if I had the time). Nevertheless I look forward to see what you make it into (in C++, which is better as it doesn't require runtimes) ;) . Iether way, it has great potential for being a much used plugin... go for it  ;) (Y) [*]

[*]this said, it should even be a standard function in Plus IMHO! :P
RE: [REQ] People online by Itsme-HcK on 12-22-2005 at 07:10 AM

Hehe, thanks. (I hope)
The status isn't required; nothing will become "online". ;)
Now I only need a nice name for the plug-in... (Not something like OnlinePeople, for it will get more functionality)

[edit]
After some thinking, I decided that the following will be the syntax:
/xwhois [help] [status:[status]] [group:[group]] [mask:[mask]]
The parameters could be in another order, for it will seek for status:, group: and mask:. :)
The tags are (!XWHOIS) and (!XWHOIS_FILL_IN_SOMETHING_HERE).
Example:
(!XWHOIS_ONLINE)
(!XWHOIS_AWAY_FRIENDS)
(!XWHOIS_BUSY_FAMILY_Busy on group $group$: $name)
(!XWHOIS_HELP)


RE: [REQ] People online by CookieRevised on 12-22-2005 at 11:33 AM

Then what are you going to show when the user simply types /xwhois or uses only (!xwhois)? And what to show when there is no status is given (or a certain other parameter is not given for that matter)? I assume in that case that the plugin will use what has been set as default in the preferences of the plugin (hint :p)?

Anyways, I'll sush now :p

PS: I'm not sure I understand the need for (!xwhois_help) though.


RE: [REQ] People online by Chestah on 12-22-2005 at 11:57 AM

Just think about the audience for this plugin when your making it and the level of user-friendlyness it provides. CookieRevised's method is very simple and easy to understand. The way your doing it at the moment looks complex (syntax) and doesn't follow the syntax's in which other Msgplus! plugins follow.

I'd have a serious think about how your going to implement this before you start doing it :)


RE: [REQ] People online by CookieRevised on 12-22-2005 at 12:22 PM

hmmm dunno... his current worked out method is indeed a bit more complex, but has some advantage also though (that the order doesn't matter), although this comes with the disadvantage that you need those "status:", "group:" prefixes....

The advantage of his method (if implemented right) is that you can use /xwhois without any parameters (eg: if you use it often worf busy family members, you would need to set that as defaults in the preferences). Though, this can also easly be accomplished with my first method by using a quicktext...

EDIT:
but indeed, the random order isn't a good thing todo and will make your plugin very complex to code and handle. eg: what if I have a group called status:away mostly

then you could need to parse something like:
in case the user decides to use this order: /xwhois [group] [status]
/xwhois status:away mostly status:online

see the difficulty and bugs in that. There is no way you can determine which parameter is which (and also forget about looking up groups and comparing that to parameters etc, this is way too complex and prone to errors; furthermore what if the user typed the grouped name wrong? etc)

On the other hand, if done right (but this is actually making it even more complex I think) you can also allow for multiple statusses and groupnames...

Anyways, what Chestah said is extremely important:
I'd have a serious think about how your going to implement this before you start doing it :)

Think about all the consequences of one method over the other, complexity, structure, advantages (but mostly disadvantages), etc...

;)


RE: [REQ] People online by Itsme-HcK on 12-22-2005 at 01:27 PM

You've got a point there, but your way won't work either. :P
Only one word per status is allowed now.
Default is just all statuses. (I don't think I'm going to make an option to change that, if you use it a lot, just add a quicktext?

There are indeed more statuses allowed per xwhois, by simply doing something like this:
/xwhois group:friends status:online,busy,brb
Or by making more status: statements:
/xwhois group:friends status:online status:busy status:brb
You could also specify more groups:
/xwhois group:friends,family
/xwhois group:friends group:family

A little note on the masks:
I have declared $name$, $email$, $status$ and $group$, should I make more?

I made the order customisable because I normally look again at a command and see I've forgotten something. I never want to raise my whole arm to grab my mouse again, so I have to scroll through it with my keyboard, which really sucks on long commands. With this syntax, you could just add it in the end.


RE: [REQ] People online by CookieRevised on 12-23-2005 at 01:22 AM

quote:
Originally posted by Itsme-HcK
You've got a point there, but your way won't work either.
what wouldn't work? The multiple stuff? It is perfectly possible though. In case the user wants more group names or statusses, he can always create a quicktext calling the whois command/tag multiple times, since a contact can only be in one group at the time and only have one status at the time.

In fact, you do not need a command at all for this whole plugin idea, only 1 tag (with 2 parameters).

bare with me (it's very long as all this is hard to explain (and I like writing long stuff they say -I wonder why- :p)):

quote:
Originally posted by Itsme-HcK

(...) indeed more statuses allowed per xwhois, by simply doing something like this:
     /xwhois group:friends status:online,busy,brb
Or by making more "status:" statements:
     /xwhois group:friends status:online status:busy status:brb
You could also specify more groups:
     /xwhois group:friends,family
     /xwhois group:friends group:family
I don't recommend using the comma as delimiter. It would work for the statusses (because a comma isn't part of any status text), but not for the groups. Because a comma is a much used character, also in group names themselfs.

And there is another common and more important problem which I already explained, but I wish to emphasize again using your latest examples as a guide:

Using text as a parameter isn't that strait forward to implement as you might think (though, I don't know what you might think of course :p). Especially if prefixes used in parameters can actually also be part of the text you need to enter after the prefixes. And especially in cases were parameters do not have a fixed order, you really making it yourself much harder to code this and to avoid bugs.

eg: /xwhois group:friends group:family

What is the actual first group name here? "friends" or "friends group" or maybe even "friends group:family"? All three are perfectly possible, valid and even logical group names... Remember that you can use any character in groupnames, including comma's, spaces, quotes, etc...

This is exactly what I meant with "using that method will make your plugin, aka the parsing of commands, very complex and prone to errors/bugs" (but not impossible to make).

And if you are including that mask-as-a-parameter idea in all this, the problem gets even worse (and almost not possible anymore to make it properly).

-------

Thus because of all this, I think this is a case were too much freedom in your command and/or tags structure results in buggy usage and code. And thus the reason why I would only make it useable for single parameters (at least for the group name in your latest method) and with a fixed order. Aka: you don't need to make it so complex in order to provide freedom to the user (but more about this later).

The status parameter could contain multiple statusses. Though it is not really needed as the user could call the whois command/tag multiple times anyways. But if you really want it in one syntax anyways, then only delimit it by a comma (or other character for that matter). Thus only using one single "status:" prefix and not the possebility to enter more "status:" prefixes. Otherwise you would have again the same problem as described in the first section of this post; where does one prefix/parameter end and where does another one begin.

The mask idea is nice, but again prone to problems as described above. Where does the group name end, and where does the mask begin? Note: using a "mask:" prefix would work, but limits again the group names themselfs. And actually even limits what you can do with the mask! Unless you use it again in combination with quicktexts. But then again why using a "mask" parameter in the first place when the user needs to make quicktexts anyways in order to have total freedom (eg: I'm thinking of the use of carriage returns for example).

Hence why I would not implement the mask idea at all and certainly not as a parameter.

-------

Thus to conclude this long rant (almost): after analyzing all this from scratch using your latest method and thinking about it for the second time, I come again to the same syntax as I mentionned before (only now, I even realize you do not even need a command at all, only 1 tag):

(!XWHOIS_STATUS_GROUPNAME)

Where the layout of the output (what you called the "mask") is set in a preference dialog (thus not as parameter). And this "mask" is only for the relevant output itself, not for the words or whatever that would come before or after the output and make up a sentence, as that can be done using quicktexts anyways.

So the mask is not something like a textbox (or parameter) where the user can define:
   "These are all the people from the group $groupsname$ who are $status$: $names$"
because all that can be done in a quicktext anyways:
   These are all the people from the group family who are busy: (!XWHOIS_BUSY_FAMILY)
which also enables the user to use multiple lines if he wants, because...

The "layout" is defined in a preference panel where the user must select what is been shown (what the result of the tag will be):
   option: [  ] show friendly name
   option: [X] show email
   small textbox or combobox or something: delimiter = [ ... ]
Where the delimiter can be a carriage return (aka line feed) for example or even something like: "<ctrl+o>,<ctrl+k>5" making the individual parts even colored if they want, etc... etc...

In fact, like this the user can make his own /xwhois command (or multiple commands)!

-------

Additional note about supporting possible other more specific tags like one for the group name, one for the status, etc: Since the groupname is specified as a parameter inside the main tag anyways, the user also already knows which group name he is selecting (otherwise he wouldn't be able to enter the group name as a parameter of course). This means you don't need a (!xgroup) tag either to make up some mask or layout or something inside quicktexts... same story with the statusses btw.

thus not:
   These are all the people from the group (!xgroup) who are (!xstatus):
   #(!XWHOIS_AWAY_FAMILY),(!XWHOIS_AWAY_FRIENDS)

but:
   These are all the people from the group family and friends who are away:
   #(!XWHOIS_AWAY_FAMILY),(!XWHOIS_AWAY_FRIENDS)



-------

So, you see, with an extremely simplyfied and fixed method, you actually give the user far more possebilities. And above all, it would be dead easy to program something like this (compared to the extremely complex parsing you would need with multiple same parameters, random orders, etc)

-------

Anyways, all this is IMHO (in my humble opinion) of course; This is how I think about all this, not how you must program it. Just giving my point of view about this (as I find this a potential usefull plugin and interesting subject to think, wonder and talk about)...

;)


EDIT: Come to think of it, another advantage of my single tag method is the ability to enter only a part of the group name instead of the full group name, since it is very clear what the full groupname parameter is (as you can't have multiple ones, and the order is fixed, and it is the last parameter). In your method, this would even add more troubles (on the already existing parsing problems) in determining what the complete groupname parameter would be.
RE: [REQ] People online by Itsme-HcK on 12-23-2005 at 02:01 PM

You've got some other points there, again.
Though, the $group$ variabele was added for my first syntax, where the users could add multiple groups; could be usefull.

After all this useless syntax-sp0m, I'm still not sure which I'm going to use. :P
My syntax has bugs, so that one already disappears.
However, yours doesn't give enough freedom, imho. ;)
It should be possible to give an own way of showing it; your way can only show OR the e-mail, OR the name, not both. And it should be possible to do that for only ONE statement, and different for the other.
After reconsidering all this; maybe the next one is better:
/xwhois group:"groupname","another one","another two" status:brb,busy mask:Online on group $group$: $name$ ($email$) (And maybe more groups or statuses.)
The quotes in the groupname could then just be escaped using the backslash.
The tag would be something like this:
(!XWHOIS_statuses_return value_groupname) (return value being $email$ or $name$ or such.)


RE: [REQ] People online by CookieRevised on 12-23-2005 at 03:39 PM

quote:
Originally posted by Itsme-HcK
Though, the $group$ variabele was added for my first syntax, where the users could add multiple groups; could be usefull.
You can already do that without the $group$ variable if you simplify your whole syntax and the logic of the plugin. You make it far too complex then actually needed for what you want.
quote:
Originally posted by Itsme-HcK
However, yours doesn't give enough freedom, imho.
It is only the result of leaving all the complex stuff out of your syntax by simplifying the use of it and the logic behind it. The result has even more freedom than the first complex syntax of yours...

That was the whole point of my previous post: that you can greatly simplify stuff without reducing any of the possebilities.
quote:
Originally posted by Itsme-HcK
It should be possible to give an own way of showing it; your way can only show OR the e-mail, OR the name, not both.
That's only a matter of how you design the preference dialog (what I gave was just a simple example). It hasn't got much todo in how you create the syntax or if you use a command or tag or whatever.
quote:
Originally posted by Itsme-HcK
And it should be possible to do that for only ONE statement, and different for the other.
Again, only a matter of how you design the preference screen and also why there are quicktexts. So the user can make his own commands and combinations.

Why making it so complex when there is already a perfect way for the user to make their own output using quicktexts. And quicktexts is what he is going to use anyways, so it would be kind of stupid for not using its capabilities.
quote:
Originally posted by Itsme-HcK
After reconsidering all this; maybe the next one is better:
/xwhois group:"groupname","another one","another two" status:brb,busy mask:online on group $group$: $name$ ($email$) (And maybe more groups or statuses.)
The quotes in the groupname could then just be escaped using the backslash.
The tag would be something like this:
(!XWHOIS_statuses_return value_groupname) (return value being $email$ or $name$ or such.)
Make your parameters consistent. Why using quotes in one parameter, but not in the other one? If a program uses parameters, it is supposed to be done in a consistant way; each parameter should have the exact same set of 'syntax rules'.

And if you make it consistent (and fixed), you'll also will find that you don't need the prefixes anymore either, since each parameter is delimited by a space (as it is standard thruout windows).

But forgot about the command, you only need a tag. As I said in my previous post, you don't need a command at all! The user can create there own commands. And this also means you do not need a $group$, $email$ or $name$ thingie at all.

------------

I only want you to give some advise which prevents making something which possible contains limits, bugs, inconsistancies and a too complex syntax from the start. You are going to experience a lot of coding problems otherwise (also seeing your other programming question).
RE: [REQ] People online by Itsme-HcK on 12-23-2005 at 08:16 PM

About my other problem; that's one big misunderstanding, I guess. :)
I was talking about Windows messages, you were talking about Messenger messages.

Now about this one, I think a command could still be usefull. Typing everything uppercase sucks as hell. I'll think about the syntax some time, and come up with a new plan then. :)


RE: [REQ] People online by CookieRevised on 12-24-2005 at 12:41 AM

quote:
Originally posted by Itsme-HcK
About my other problem; that's one big misunderstanding, I guess. :)
I was talking about Windows messages, you were talking about Messenger messages.
Yeah, apparently. Though you don't need to parse any windows message at all. Unless you're doing subclassing and stuff, but even then a plugin doesn't need to be "active" all the time as windows itself will call the subclassing functions of your plugin (is called callback functions and setting hooks, so that windows knows what to call). In normal circumstances you don't need to subclass or hook anything.

quote:
Originally posted by Itsme-HcK
Now about this one, I think a command could still be usefull. Typing everything uppercase sucks as hell.
Very true. However, you don't have to type everything always in uppercase, as the tag will almost always and only be used in a quicktext. And a quicktext can have his own command (and tag for that matter) set and choosen by the user himself ;)
RE: [REQ] People online by Itsme-HcK on 12-24-2005 at 09:04 AM

A true word.
Now, how about this command then (again):
/xwhois "group1","group2" "status1","status2" "mask"
Escaping quotes with teh backslash.
The group and status parameter could also be "all".
The tag:
(!XWHOIS_group_status_return parameter)


RE: [REQ] People online by CookieRevised on 12-24-2005 at 08:36 PM

looks much better; a whole lot more consistant, cleaner and easier than your first syntaxes.